#macro-derive #http #derive #macro

query-params-derive

Rust 宏,用于自动实现任意结构体的 HTTP 查询参数序列化

3 个不稳定版本

使用旧的 Rust 2015

0.1.1 2020 年 1 月 11 日
0.1.0 2020 年 1 月 11 日
0.0.1 2020 年 1 月 11 日

#1955开发工具

MITGPL-3.0 许可证

12KB
150

query-params-serialize

Build Status

查询参数的 Serde 序列化器。


lib.rs:

将任意结构体转换为 HTTP 查询参数

此 crate 通过使用自定义 derive 的过程宏生成一个函数,将任意结构体的字段序列化为 HTTP 查询参数 String。查询参数 String 的返回值旨在与任何 Rust 客户端 HTTP 库一起使用。

入门

query_params 添加到您的 Cargo.toml 依赖项中。

概述

#[macro_use]
extern crate query_params;
extern crate query_params_trait;

use query_params_trait::QueryParams;

#[derive(QueryParams)]
struct PullRequestsParametersApi {
    page: i32,
    sort: bool,
    direction: String,
    state: Vec<String>,
    // .. other interesting fields ..
}

let pr = PullRequestsParametersApi {
    page: 2,
    sort: true,
    direction: "asc".to_string(),
    state: vec!["open".to_string(), "closed".to_string()],
};

pr.query_params();

生成内容

#[derive(QueryParams)]
struct PullRequestsParametersApi {
    page: i32,
    sort: bool,
    direction: String,
    state: Vec<String>,
    // .. other interesting fields ..
}

// Code generate
impl PullRequestsParametersApi {
    fn query_params(&self) -> String {
        let mut buf = String::from("?");
        
        // Stuff to fill buf with the struct fields content
        
        return buf
    }
    // expect "?page=2&sort=true&direction=asc&state=open,closed" with the example above
}  

依赖项

~1.5MB
~36K SLoC