Crates.io Docs.rs

restep

Restep can create highly readable APIClient.

Usage

Automatically generates the endpoint() function that returns the specified endpoint.

Basic

```rust use restep::endpoint;

[endpoint("/customers")]

fn simple() -> String { // You can use fn endpoint() -> String in this function. endpoint() } assert_eq!(simple(), "/customers"); ```

Path Parameters

```rust use restep::endpoint;

struct PathParameters { customer_id: i32, }

[endpoint("/customers/{customer_id}", params = "PathParameters")]

fn dynamicroute() -> String { let params = PathParameters { customerid: 1 }; // You can use fn endpoint(params: &PathParameters) -> String in this function. endpoint(&params) } asserteq!(dynamicroute(), "/customers/1"); ```

Examples

RealWorld

```rust use restep::endpoint;

[derive(serde::Deserialize)]

struct Customer { id: i32, name: String, }

struct APIClient { client: reqwest::Client, }

struct PathParameters { customer_id: i32, }

impl APIClient { #[endpoint("/customer/{customerid}", params = "PathParameters")] async fn getcustomer(&self, params: PathParameters) -> anyhow::Result { let url = format!("{}{}", std::env::var("BASE_URL").unwrap(), endpoint(&params)); let customer = self.client .get(url) .send() .await? .json() .await?; Ok(customer) } } ```