Yes, you can use Reqwest to interact with RESTful APIs. Reqwest is a popular Rust library used for making HTTP requests. It provides a convenient interface for sending HTTP requests and interacting with RESTful APIs. The library supports both synchronous and asynchronous operations, making it flexible for different use cases, including web scraping, API integration, or any client-server communication over HTTP.
Here is a simple example of how you might use Reqwest to make GET and POST requests to a RESTful API in Rust:
GET Request Example
use reqwest;
use std::collections::HashMap;
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
let response = reqwest::get("https://jsonplaceholder.typicode.com/posts/1")
.await?
.json::<HashMap<String, String>>()
.await?;
println!("{:#?}", response);
Ok(())
}
In this example, we are making an asynchronous GET request to the jsonplaceholder.typicode.com
API, which is a fake online REST API for testing and prototyping. We are also deserializing the JSON response into a HashMap
.
POST Request Example
use reqwest;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
let client = reqwest::Client::new();
let post_data = json!({
"title": "foo",
"body": "bar",
"userId": 1
});
let response = client.post("https://jsonplaceholder.typicode.com/posts")
.json(&post_data)
.send()
.await?;
println!("Response: {:?}", response.text().await?);
Ok(())
}
In this POST request example, we are sending a JSON payload to the same API. We use the json!
macro from serde_json
to construct the JSON body and then send it using the post
method of a reqwest::Client
instance.
Remember to add the required dependencies to your Cargo.toml
file:
[dependencies]
reqwest = { version = "0.11", features = ["json"] }
tokio = { version = "1", features = ["full"] }
serde_json = "1.0"
The features = ["json"]
in the Reqwest dependency enables the JSON support in the Reqwest library. The tokio
dependency is for the async runtime, and serde_json
is for JSON serialization and deserialization.
Reqwest's API is designed to be ergonomic and easy to use, making it a good choice for interacting with RESTful APIs in Rust.