http-request

Crates.iohttp-request
lib.rshttp-request
version8.34.0
sourcesrc
created_at2024-11-29 01:36:52.31709
updated_at2025-01-09 00:53:07.285013
descriptionhttp-request is a lightweight, efficient library for building, sending, and handling HTTP/HTTPS requests in Rust applications. It provides a simple and intuitive API, allowing developers to easily interact with web services, whether they use the "HTTP" or "HTTPS" protocol. The library supports various HTTP methods, custom headers, request bodies, timeout, automatic handling of redirects (including detecting redirect loops), and enhanced response body decoding (both automatic and manual), enabling fast and secure communication. Whether working with secure "HTTPS" connections or standard "HTTP" requests, the library is optimized for performance, minimal resource usage, and easy integration into Rust projects.
homepage
repositoryhttps://github.com/ltpp-universe/http-request.git
max_upload_size
id1465127
size101,737
尤雨东 (ltpp-universe)

documentation

README

http-request

Official Documentation

Api Docs

http-request is a lightweight, efficient library for building, sending, and handling HTTP/HTTPS requests in Rust applications. It provides a simple and intuitive API, allowing developers to easily interact with web services, whether they use the "HTTP" or "HTTPS" protocol. The library supports various HTTP methods, custom headers, request bodies, timeout, automatic handling of redirects (including detecting redirect loops), and enhanced response body decoding (both automatic and manual), enabling fast and secure communication. Whether working with secure "HTTPS" connections or standard "HTTP" requests, the library is optimized for performance, minimal resource usage, and easy integration into Rust projects.http-request is a lightweight, efficient library for building, sending, and handling HTTP/HTTPS requests in Rust applications. It provides a simple and intuitive API, allowing developers to easily interact with web services, whether they use the "HTTP" or "HTTPS" protocol. The library supports various HTTP methods, custom headers, request bodies, timeout, automatic handling of redirects (including detecting redirect loops), and enhanced response body decoding (both automatic and manual), enabling fast and secure communication. Whether working with secure "HTTPS" connections or standard "HTTP" requests, the library is optimized for performance, minimal resource usage, and easy integration into Rust projects.

Features

  • Support for HTTP/HTTPS: Supports both HTTP and HTTPS protocols.
  • Lightweight Design: The http_request crate provides a simple and efficient API for building, sending, and handling HTTP requests while minimizing resource consumption.
  • Supports Common HTTP Methods: Supports common HTTP methods such as GET and POST.
  • Flexible Request Building: Offers rich configuration options through RequestBuilder to set request headers, bodies, and URLs.
  • Simple Error Handling: Utilizes the Result type to handle errors in requests and responses, making error handling straightforward.
  • Custom Headers and Request Bodies: Easily add custom headers and request bodies.
  • Response Handling: Provides a simple wrapper around HTTP responses, making it easy to access and process response data.
  • Optimized Memory Management: Implements efficient memory management to minimize unnecessary memory allocations and improve performance.
  • Redirect Handling: Supports redirect handling, allows setting the maximum number of redirects, and includes redirect loop detection.
  • timeout: Supports timeout.
  • Automatic and Manual Response Body Decoding: Supports both automatic and manual decoding of response bodies, allowing for seamless interaction with different content types (e.g., JSON, XML, etc.).

Installation

To use this crate, you can run cmd:

cargo add http-request

Use

Send get request

use http_request::*;
use std::collections::HashMap;
let mut header: HashMap<&str, &str> = HashMap::new();
header.insert("header-key", "header-value");
let mut _request_builder = RequestBuilder::new()
    .get("https://ltpp.vip/")
    .headers(header)
    .timeout(6000)
    .redirect()
    .max_redirect_times(8)
    .http1_1_only()
    .buffer(4096)
    .decode()
    .build();
_request_builder
    .send()
    .and_then(|response| {
        println!("{:?}", response.text());
        Ok(())
    })
    .unwrap_or_else(|e| println!("Error => {}", e));

Send post request

Send Body Json

use http_request::*;
use std::collections::HashMap;
let mut header: HashMap<&str, &str> = HashMap::new();
header.insert("header-key", "header-value");
let mut body: HashMap<&str, &str> = HashMap::new();
body.insert("body-key", "body-value");
let mut _request_builder = RequestBuilder::new()
    .post("http://localhost:80")
    .json(body)
    .headers(header)
    .timeout(6000)
    .redirect()
    .max_redirect_times(8)
    .http1_1_only()
    .buffer(4096)
    .build();
_request_builder
    .send()
    .and_then(|response| {
        println!("{:?}", response.decode().text());
        Ok(())
    })
    .unwrap_or_else(|e| println!("Error => {}", e));

Send Body Text

use http_request::*;
use std::collections::HashMap;
let mut header: HashMap<&str, &str> = HashMap::new();
header.insert("header-key", "header-value");
let mut _request_builder = RequestBuilder::new()
    .post("http://localhost")
    .text("hello")
    .headers(header)
    .timeout(6000)
    .redirect()
    .max_redirect_times(8)
    .http1_1_only()
    .buffer(4096)
    .decode()
    .build();
_request_builder
    .send()
    .and_then(|response| {
        println!("{:?}", response.text());
        Ok(())
    })
    .unwrap_or_else(|e| println!("Error => {}", e));

Send Body Binary

use http_request::*;
use std::collections::HashMap;
let mut header: HashMap<&str, &str> = HashMap::new();
header.insert("header-key", "header-value");
let mut _request_builder = RequestBuilder::new()
    .post("http://localhost")
    .body("hello".as_bytes())
    .headers(header)
    .timeout(6000)
    .redirect()
    .max_redirect_times(8)
    .http1_1_only()
    .buffer(4096)
    .build();
_request_builder
    .send()
    .and_then(|response| {
        println!("{:?}", response.decode(4096).text());
        Ok(())
    })
    .unwrap_or_else(|e| println!("Error => {}", e));

Help

Ensure that CMake is installed on the system

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Contact

For any inquiries, please reach out to the author at ltpp-universe root@ltpp.vip.

Commit count: 73

cargo fmt