mclient_macro

Crates.iomclient_macro
lib.rsmclient_macro
version0.1.4
sourcesrc
created_at2021-01-31 15:47:59.118987
updated_at2021-02-18 14:41:58.270853
descriptionmacro based http client
homepage
repositoryhttps://github.com/yanfenglee/mclient
max_upload_size
id348916
size18,065
(yanfenglee)

documentation

https://docs.rs/mclient

README

mclient

macro based http client for rust

examples

use mclient::{post};
use reqwest::{Error};
use serde::{Serialize};

#[derive(Serialize, Debug)]
struct PostData {
    name: String,
    permissions: Vec<i32>,
}

#[derive(Deserialize, Debug)]
struct IP {
    origin: String,
}


#[tokio::main]
async fn main() -> Result<(), Error> {

    #[post("https://httpbin.org/post")]
    async fn post_data(#[body]data: &PostData) -> Result<String, Error> {}

    let data = PostData {
        name: "jjj".to_string(),
        permissions: vec![100,200,300],
    };

    let res = post_data(&data).await?;

    println!("res: {:?}", res);

    #[get("https://httpbin.org/ip")]
    async fn get_ip(#[param]name: String, #[param("sex")]gender: i32, #[header]token: String) -> Result<IP, Error> {}

    let res = get_ip("mclient".to_string(), 1,"xxxx".to_string()).await?;

    println!("res: {:?}", res);

    #[get("https://httpbin.org/cookies/set/{name}/{value}")]
    async fn path_test(#[path("name")]name1: String, #[path]value: i32) -> Result<String, Error> {}

    let res = path_test("num".to_string(), 111).await?;

    println!("res: {:?}", res);


    Ok(())
}

use struct

use mclient::{mclient, Error};
use serde::{Deserialize};

#[derive(Deserialize, Debug)]
struct IP {
    origin: String,
}

struct Host;

#[mclient("https://httpbin.org")]
impl Host {
    #[get("/ip")]
    pub async fn get_ip(#[param]param: i32) -> Result<String, Error> {}

    #[get("/ip")]
    pub async fn get_ip2(#[param]param: i32) -> Result<IP, Error> {}
}

#[tokio::main]
async fn main() -> Result<(), Error> {
    let res = Host::get_ip(1).await;
    println!("res: {:?}", res);

    let res = Host::get_ip2(1).await;
    println!("res2: {:?}", res);

    Ok(())
}

License

This project is licensed under the MIT license.

Commit count: 50

cargo fmt