Parse HTTP Request Params(the API for parsing Chinese)

这是之前字节的面试题,本来打算下来用正则试试,结果发现多条参数匹配正则很麻烦,当时不知道怎么解析汉字,下来查到了解析汉字的API。浏览器会将url中的中文参数进行encodeURI编码,解析就用decodeURI。

function getQuery(){
   
    let query = new Map();
    let arr = window.location.search.substr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要使用TcpStream从套接字中读取数据。然后,可以使用std :: str :: from_utf8将其转换为字符串。接下来,您可以使用split方法将字符串分成行,并使用Iterator的next方法获取请求行。 对于请求行,可以使用split_whitespace方法将其分成三个部分:请求方法、请求的URL和HTTP版本。您可以将这些值存储在结构体中,如下所示: struct Request { method: String, url: String, version: String, } 接下来,您可以使用next方法获取消息报头。可以使用split方法将每个消息报头行分成键值对。最后,您可以使用from_utf8解析消息主体。 以下是完整的代码示例: use std::io::prelude::*; use std::net::TcpStream; use std::str::from_utf8; fn parse_request(stream: &mut TcpStream) -> Request { let mut data = [0; 512]; stream.read(&mut data).unwrap(); let request = from_utf8(&data).unwrap(); let mut lines = request.split("\r\n"); let request_line = lines.next().unwrap(); let mut parts = request_line.split_whitespace(); let method = parts.next().unwrap().to_string(); let url = parts.next().unwrap().to_string(); let version = parts.next().unwrap().to_string(); let mut headers = std::collections::HashMap::new(); for line in lines { if line == "" { break; } let mut parts = line.split(": "); let key = parts.next().unwrap().to_string(); let value = parts.next().unwrap().to_string(); headers.insert(key, value); } let body = lines.last().unwrap().to_string(); Request { method, url, version, headers, body, } } struct Request { method: String

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值