#查询参数 #查询 #hyper #hyper-http #参数 #http #参数

query-params-macro

用于在Hyper中轻松使用任意结构体作为查询参数的过程宏

2个版本

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

#17#参数

Download history 18/week @ 2024-03-18 3/week @ 2024-03-25 29/week @ 2024-04-01 8/week @ 2024-04-08 7/week @ 2024-04-15 21/week @ 2024-04-22 24/week @ 2024-04-29 13/week @ 2024-05-13 24/week @ 2024-05-20 47/week @ 2024-05-27 20/week @ 2024-06-03 15/week @ 2024-06-10 14/week @ 2024-06-17 14/week @ 2024-06-24

67 每月下载次数
2 个crate中使用(通过 to-query-params

MIT 许可证

13KB
172

to-query-params

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

可以使用urlencoding crate中的to_encoded_params方法对查询参数进行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);
 }

lib.rs:

QueryParams是一个过程宏,用于生成一个针对Hyper的表示,该表示可以将该结构体作为查询参数轻松附加到Hyper框架中的查询参数。 此crate仅用于由QueryParams crate测试和导出,不应直接使用。

依赖关系

~280–730KB
~18K SLoC