Crates.io | interfacer-http-hyper |
lib.rs | interfacer-http-hyper |
version | 0.1.0 |
source | src |
created_at | 2019-09-05 11:43:31.720209 |
updated_at | 2019-09-05 11:43:31.720209 |
description | hyper based http-service for interfacer-http |
homepage | |
repository | https://github.com/Hexilee/interfacer-http |
max_upload_size | |
id | 162413 |
size | 4,062 |
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;