interfacer-http-hyper

Crates.iointerfacer-http-hyper
lib.rsinterfacer-http-hyper
version0.1.0
sourcesrc
created_at2019-09-05 11:43:31.720209
updated_at2019-09-05 11:43:31.720209
descriptionhyper based http-service for interfacer-http
homepage
repositoryhttps://github.com/Hexilee/interfacer-http
max_upload_size
id162413
size4,062
xixi (Hexilee)

documentation

https://docs.rs/interfacer-http-hyper

README

A magic http client, like retrofit in Java

// 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;
Commit count: 271

cargo fmt