#查询参数 #hyper-http #查询 #参数 #查询字符串 #hyper #http框架

to-query-params

一个过程宏和特质,用于在Hyper中轻松地将任意结构体用作查询参数

1个不稳定版本

0.0.4 2023年10月18日
0.0.3 2023年10月18日
0.0.2 2023年10月17日

#9 in #参数

每月 35 次下载
用于 kraken-async-rs

MIT 许可证

11KB
190

to-query-params

一个过程宏和特质,用于将任意结构体转换为Vec<(String, String)>,用作查询参数,最初旨在与Hyper HTTP框架一起使用。

查询参数可以通过调用to_encoded_params方法使用urlencoding包进行url编码,而默认的to_query_params方法不会对参数进行url编码。

badge License: MIT

用法

use query_params::{ToQueryParams, QueryParams};

 // Eq and PartialEq are just for assertions
 #[derive(QueryParams, Debug, PartialEq, Eq)]
 struct ProductRequest {
     #[query(required)] // fields that aren't Option<T> must be marked as required
     id: i32,
     #[query(required, rename = "type")]
     product_type: String,
     min_price: Option<i32>,
     max_price: Option<i32>,
 }

 pub fn main() {
     let request = ProductRequest {
         id: 999,
         product_type: "accessory".to_string(),
         min_price: None,
         max_price: Some(100),
     };

     let expected = vec![
         ("id".into(), "999".into()), 
         ("type".into(), "accessory".into()), 
         ("max_price".into(), "100".into())
     ];
     
     let query_params = request.to_query_params();

     assert_eq!(expected, query_params);
 }

依赖项

~260–700KB
~17K SLoC