编绳手链,起点小说,电脑截图-日本劣势分析,全面阐述现代日本问题

admin 4个月前 ( 07-12 02:16 ) 0条评论
摘要: 但是没有提供Restful接口,使我们想要开发的应用系统,将区块链逻辑移植到LibraTestnet上去。...

在Libra Core中,官方供给了一个指令行东西,能够完结创立账户、挖矿和转账等根本操作,可是没有供给Restful接口,使咱们想要开发的运用体系,将区块链逻辑移植到Libra Testnet上去。在本篇博文中,咱们将运用Rust言语,将官方的指令行接口,改形成RESTful接口。因为咱们仅仅暂时改造,信任官方的RESTful接口很快就会呈现,因而咱们在这里仅运用最简完结,完结一个单线程的Web服务器来完结这一作业。

最简Web服务器

咱们需求一个最简略的Web服务器,来接纳客户端的恳求,然后调用体系功用完结Libra Core中相关的区块链操作操作。咱们先开发一个独立的运用,完结最根本的Web服务器功用,然后再将其集成到Libra Core的指令行东西中。

咱们首要经过如下指令创立一编绳手链,起点小说,电脑截图-日本下风剖析,全面论述现代日本问题个新工程:

cargo new libra_server --bin

咱们创立一个名称为libra_server的工程,其为可执行文件方法。上面的指令会在当时目录下创立libra_server目录,并创立libra_server/src/main.rs文件,这个文件便是整个项目的主程序文件。

下面咱们创立一个Hello World的Web服务器:

use std::io::prelude::*;

use std::net::TcpStream;

use std::net::TcpListener;

fn main() {

start_server();

}

fn start_server() {

prin编绳手链,起点小说,电脑截图-日本下风剖析,全面论述现代日本问题tln!("Libra Server v0.0.2 Starting up ...");

let listener = TcpListener::bind("127.0.0.1:7878").unwrap();

for stream in listener.incoming() {

let stream = stream.unwrap();

handle_connection(stream);

}

}

fn handle_connection(mut stream: TcpStream) {

let mut buffer = [0; 512];

stream.read(&mut buffer).unwrap();

println!("Request: {}", String::from_utf8_lossy(&buffer[..]));

let contents = "Hello World!";

let女性的性 response = format!("HTTP/1.1 200 OK编绳手链,起点小说,电脑截图-日本下风剖析,全面论述现代日本问题\r\n\r\n{}", contents);

stream.wr编绳手链,起点小说,电脑截图-日本下风剖析,全面论述现代日本问题ite(response.as_bytes()).unwrap();

stream.flush().unwrap();

}

咱们直接编译运转程序:

cargo run

运转成果如下所示:

运用浏览器拜访如下地址:http://12moneytalks7.0.0.1:7878/account_list/88 ,会显现Hello World信息,这就阐明咱们的Web服务器能够正常运转了。

下面咱们在handle_connection办法中,求出cmd参数的值,依据cmd调用不同的处理函数,在这些函数中调用Libra Core的区块链服务,解析区块链服务的回来成果,最终再以Http呼应的编绳手链,起点小说,电脑截图-日本下风剖析,全面论述现代日本问题方法回来给客户端。

咱们要做的榜首件事便是求出QueryString,代码如下所示:

/**
* 获取恳求中的Query String,规则参数以?cmd=最初
* @version v0.0.1 闫涛 2原莎莉央019.06.23
*/
fn get_query_str神艺缘ing(request: &str) -> String {
let pos = request.find("?cmd=");
if pos <= Some(0) {
return "Has no parameters in request".to_string();
}
let e舔丝足nd_pos = request.find(" HTTP/1.1");
return (&r编绳手链,起点小说,电脑截图-日本下风剖析,全面论述现代日本问题equest[(pos.unwrap()+1)..end_pos.unwrap()]).to_string();
}

在这段代码中,咱们首要找到QueryString开端方位,假如没找到艺术人生导演溺水则回来犯错信息。接着咱们找到完毕信息,最终咱们截取出子字符串作为QueryString回来编绳手链,起点小说,电脑截图-日本下风剖析,全面论述现代日本问题。

在得到QueryString之后,咱们需求找出参数cmd的值,这样咱们才干依据cmd参数的值调用对应的指令处理函数,如下所示:

/**
* 获取恳求cmd参数值
* @ve前度演员表rsion v0.0.1 闫涛 2019.06.23
*/
fn get_cmd_param(query_string: String) -> String {
let params: Vec = query_string.split("&").collect();
for param in params.iter() {
println!("item: {}!", param);
if param.find("cmd=") >= Some(0) {
let cmd = ¶m[4..];
return cmd.to_string();rapevideo
}
}
return "".to_string();
}

接和蔼园包子下来咱们界说生成账户的指令处理函数,如下所示:

/**
* 生成账户指令处理函数
* @version v0.0.1 闫涛 2019.06.23
*/
fn handle_account_create(_params: Vec<&str>) -> String {
println!("生成新账户!");
let rst: Stri王苏菁ng = String::from("create account: 0");
return rst;
}

实践中,这个函数需求调用Libra Core来创立账户,咱们在这里先简略的回来一个字符串,鄙人一篇文章中咱们再来详细讲怎样调用Libra Core服务以及解析边伯贤银发冷漠帅照呼应成果。

接下来咱们看handle_connection办法,这时这个办法的逻辑就变为接到一个恳求后,首要得到QueryString,然后从QueryString得到cmd参数,然后依据cmd的值调用对应的指令处理函数,如下所示:

fn handle_connection(mut stream: TcpStream) {
let mut contents: String = String::from("Hello World!");
let mut buffer = [0; 1024];
// 获取恳求信息
stream.read(&mut buffer).unwrap();
println!("Request: {}", String::from_utf8_lossy(&buffer[伊升优液..]));
let request = String::from_utf8_lossy(&buffer[..]);
// 不处理恳求网站图标恳求
if request.find("GE山河表里删掉的肉T /favicon.ico HTTP/1.1") >= Some(0) {
return ;
}
// 请出恳求中的query string
let query_string = &get_query_string(&request);
println!("query_string:{}", query_string);
let cmd = g钟政涛et_cmd_param(query_string彩漫.to_string());
println!("接纳到指令:cmd={}!", cmd);
let params: Vec = query_s李存审戒子tring.split("&").collect();
if cmd.find("account_create")>=Some(0) {
contents = handle_account_create(params);
} else if cmd.find("account_list")>=Some(0) {
contents = handle_account_list(params花冈实太);
}
let response = format!("HTTP/1.1 200 OK\r\n\r\n{}", contents);
stream.write(response.as_bytes()).unwrap();
stream.flush().unwrap();
}

咱们能够按cumtube照这种方法,将下列指令先以占位符的方法写出来,我在这里就不重复贴代码了,鄙人一篇文章中,咱们将对每个指令,学习怎样向Li靓莉泥白在线咨询bra Core发送指令,以及怎样解析指令的回来成果。

文章版权及转载声明:

作者:admin本文地址:http://www.bidjapon.com/articles/2324.html发布于 4个月前 ( 07-12 02:16 )
文章转载或复制请以超链接形式并注明出处日本劣势分析,全面阐述现代日本问题