Rust 编程小项目:WebServer 02
视频地址
头条地址:https://www.ixigua.com/i680718929763709798...
B站地址:https://www.bilibili.com/video/BV177411m78...
github地址
https://github.com/anonymousGiga/web-serve...
说明
此部分内容接前面内容Rust 编程小项目:WebServer 01
编写响应
HTTP简单介绍
(1)http请求报文包含三个部分内容 : 请求行 、 请求头 、请求体
Method Request-URI HTTP-Version CRLF //请求行:请求方式、协议版本等
headers CRLF //请求头:包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息
message-body //请求体:客户端真正要传送给服务端的内容
(2)http响应报文也有三部分内容:响应行、响应头、响应体
HTTP-Version Status-Code Reason-Phrase CRLF //响应行:报文协议及版本,状态码及状态描述;
headers CRLF //响应头:由多个属性组成
message-body //响应体:真正响应的内容
返回一个响应行
fn handle_client(stream: TcpStream) { let mut buffer = [0; 512]; stream.read(&mut buffer).unwrap(); let response = "HTTP/1.1 200 OK\r\n\r\n"; //返回一个响应行 stream.write(response.as_bytes()).unwrap(); stream.flush().unwrap(); }
返回一个真正的网页
//main.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Hello!</title> </head> <body> <h1>Hello!</h1> <p>This is a response from a Rust server</p> </body> </html>
//Rust代码修改 use std::fs; // --snip-- fn handle_client(stream: TcpStream) { let mut buffer = [0; 512]; stream.read(&mut buffer).unwrap(); let contents = fs::read_to_string("main.html").unwrap(); let response = format!("HTTP/1.1 200 OK\r\n\r\n{}", contents); stream.write(response.as_bytes()).unwrap(); stream.flush().unwrap(); }
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: