w3resource

Rust Function for Network Requests: Fetch data or Handle error

Rust Handling Errors with Result and Option: Exercise-9 with Solution

Write a Rust function that performs network requests, returning data or an error if the request fails.

Sample Solution:

Rust Code:

use reqwest; // Import the reqwest crate for making HTTP requests
use std::error::Error; // Import the Error trait for error handling

// Function to perform a GET request to the specified URL and return the response body
fn fetch_data(url: &str) -> Result<String, Box<dyn Error>> {
    let response = reqwest::blocking::get(url)?; // Perform the GET request and handle any errors
    
    // Check if the request was successful (status code 200 OK)
    if response.status().is_success() {
        let body = response.text()?; // Extract the response body as a string
        Ok(body) // Return the response body
    } else {
        Err(format!("Request failed with status code: {}", response.status()).into()) // Return an error message if the request was not successful
    }
}

fn main() -> Result<(), Box<dyn Error>> {
    let url = "https://api.example.com/data"; // Specify the URL to make the request to
    
    match fetch_data(url) {
        Ok(data) => println!("Received data: {}", data), // Print the received data if the request was successful
        Err(err) => eprintln!("Error fetching data: {}", err), // Print an error message if the request failed
    }

    Ok(()) // Return Ok if the program completes successfully
}

Output:

Compiling playground v0.0.1 (/playground)
    Finished dev [unoptimized + debuginfo] target(s) in 3.70s
     Running `target/debug/playground`
Error fetching data: error sending request for url (https://api.example.com/data): error trying to connect: dns error: failed to lookup address information: Temporary failure in name resolution

Explanation:

The above code defines a Rust function "fetch_data()" that performs a GET request to a specified URL using the "reqwest" crate. The function returns either the response body as a string or an error if the request fails. The "main()" function demonstrates the usage of 'fetch_data' by making a request to a sample URL and printing the received data or an error message.

Rust Code Editor:

Previous: Rust Function for Network Requests: Fetch data or handle Errors.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.