feignhttp

Crates.iofeignhttp
lib.rsfeignhttp
version0.5.2
sourcesrc
created_at2021-03-16 00:49:50.317535
updated_at2024-05-25 02:22:47.265396
descriptionDeclarative HTTP client for rust
homepagehttps://github.com/dxx/feignhttp
repositoryhttps://github.com/dxx/feignhttp
max_upload_size
id369474
size117,158
(dxx)

documentation

https://docs.rs/feignhttp

README

FeignHTTP

crates.io Documentation MIT licensed CI

FeignHTTP is a declarative HTTP client. Based on rust macros.

Features

  • Easy to use
  • Asynchronous request
  • Configurable timeout settings
  • Supports form, plain text and JSON
  • Selectable HTTP backends (reqwest or isahc)

Usage

FeignHTTP mark macros on asynchronous functions, you need a runtime for support async/await. You can use async-std or tokio.

async-std:

[dependencies]
async-std = { version = "1", features = ["attributes", "tokio1"] }

The feature tokio1 is need when use reqwest as the HTTP backend.

tokio:

[dependencies]
tokio = { version = "1", features = ["full"] }

Add feignhttp in your Cargo.toml and use default feature:

feignhttp = { version = "0.5" }

Then add the following code:

use feignhttp::get;

#[get("https://api.github.com")]
async fn github() -> feignhttp::Result<String> {}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let r = github().await?;
    println!("result: {}", r);

    Ok(())
}

The get attribute macro specifies get request, feignhttp::Result<String> specifies the return result. It will send get request to https://api.github.com and receive a plain text body.

Using non-default HTTP backend:

feignhttp = { version = "0.5", default-features = false, features = ["isahc-client"] }

The default-features = false option disable default reqwest.

For more examples, click here.

Documentation

Read the documentation for more details.

License

FeignHTTP is provided under the MIT license. See LICENSE.

Commit count: 246

cargo fmt