7 个版本
| 0.2.1 | 2019 年 9 月 5 日 | 
|---|---|
| 0.2.0 |  | 
| 0.1.5 | 2019 年 8 月 16 日 | 
#100 in #http-header
在 3 个crate中使用 (通过 interfacer-http)
29KB
782 行
一个神奇的 HTTP 客户端,类似于 Java 中的 retrofit
// define interface
#![feature(custom_attribute, async_await, param_attrs)]
#![allow(unused_attributes)]
use interfacer_http::derive::{FromContent, ToContent};
use interfacer_http::{content_types, http::header::COOKIE, http_interface, Response, Result};
use serde_derive::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, FromContent, ToContent, Debug)]
struct User {
    name: String,
    age: i32,
}
#[http_interface]
trait UserInterface: Clone {
    #[put("/api/user/{id}?age={age}")]
    #[expect(200, content_types::APPLICATION_JSON)]
    async fn put_user(
        &self,
        id: u64,
        age: i32,
        #[body] user: &User,
        #[header(COOKIE)] cookie: &str
    ) -> Result<Response<User>>;
}
// use it
use interfacer_http_hyper::AsyncService;
依赖项
~5.5MB
~104K SLoC