Crates.io | api-client-macro |
lib.rs | api-client-macro |
version | 0.1.4 |
source | src |
created_at | 2023-05-15 15:15:07.14555 |
updated_at | 2024-11-05 03:53:27.014495 |
description | Declaratively express a REST API client |
homepage | https://github.com/isaacadams/api-client-macro |
repository | https://github.com/isaacadams/api-client-macro |
max_upload_size | |
id | 865124 |
size | 12,533 |
A reqwest powered REST API client can be generated using api_client_macro::generate!
provided the following syntax.
api_client_macro::generate!(ApiClient, {
user {
#[get "user/{}"]
get_by_id(id: &str),
#[delete "user/{}"]
delete_by_id(id: &str),
#[post "user"]
create(),
#[get "users"]
list()
},
contact {
#[get "contact/{}"]
get_by_id(id: &str),
#[delete "contact/{}"]
delete_by_id(id: &str),
#[post "contact"]
create(),
#[get "contact"]
list()
}
});
After compilation, the following code is available.
async fn main_async() {
let client = asynchronous::Builder::new("base_url", None);
client.contact_create().body("<body>").send().await.unwrap();
client.contact_get_by_id("<id>").send().await.unwrap();
client.user_list().query(&[("email", "<email>")]).send().await.unwrap();
}
fn main_blocking() {
let client = blocking::Builder::new("base_url", None);
client.contact_create().body("<body>").send().unwrap();
client.contact_get_by_id("<id>").send().unwrap();
client.user_list().query(&[("email", "<email>")]).send().unwrap();
}