| Crates.io | api-client-macro |
| lib.rs | api-client-macro |
| version | 0.1.4 |
| created_at | 2023-05-15 15:15:07.14555+00 |
| updated_at | 2024-11-05 03:53:27.014495+00 |
| 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();
}