7 个版本

0.1.6 2022年5月10日
0.1.5 2022年1月21日

#1199 in 编码

每月 21 次下载

MIT 许可证

5KB
60

Feign-RS (Rust 的 REST 客户端)

开始使用

示例

use serde_derive::Deserialize;
use serde_derive::Serialize;

use feign::{client, ClientResult};

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct User {
    pub id: i64,
    pub name: String,
}

#[client(host = "http://127.0.0.1:3000", path = "/user")]
pub trait UserClient {
    
    #[get(path = "/find_by_id/<id>")]
    async fn find_by_id(&self, #[path] id: i64) -> ClientResult<Option<User>>;
    
    #[post(path = "/new_user")]
    async fn new_user(&self, #[json] user: &User) -> ClientResult<Option<String>>;

}

#[tokio::main]
async fn main() {
    let user_client: UserClient = UserClient::new();

    match user_client.find_by_id(12).await {
        Ok(option) => match option {
            Some(user) => println!("user : {}", user.name),
            None => println!("none"),
        },
        Err(err) => panic!("{}", err),
    };
}

特性

  • 易于使用
  • 异步请求
  • 可配置代理
  • 支持表单和 JSON
  • 重新配置主机
  • 附加请求处理器
  • 自定义反序列化器

依赖项

~5–16MB
~237K SLoC