Module client

Module client 

Source
Expand description

HTTP Client

§Usage

The Client API is designed for most people to make HTTP requests. It utilizes the lower level Request API.

§GET

let client = Client::new();

let res = client.get("http://example.domain").send().unwrap();
assert_eq!(res.status, cogo_http::Ok);

The returned value is a Response, which provides easy access to the status, the headers, and the response body via the Read trait.

§POST

let client = Client::new();

let res = client.post("http://example.domain")
    .body("foo=bar")
    .send()
    .unwrap();
assert_eq!(res.status, cogo_http::Ok);

§Sync

The Client implements Sync, so you can share it among multiple threads and make multiple requests simultaneously.

use std::sync::Arc;
use std::thread;

// Note: an Arc is used here because `thread::spawn` creates threads that
// can outlive the main thread, so we must use reference counting to keep
// the Client alive long enough. Scoped threads could skip the Arc.
let client = Arc::new(Client::new());
let clone0 = client.clone();
let clone1 = client.clone();
let clone2 = client.clone();

cogo::go!(move ||{
  clone0.get("http://example.domain").send().unwrap();
});

thread::spawn(move || {
    clone1.get("http://example.domain").send().unwrap();
});
thread::spawn(move || {
    clone2.post("http://example.domain/post").body("foo=bar").send().unwrap();
});

Re-exports§

pub use self::pool::Pool;
pub use self::request::Request;
pub use self::response::Response;

Modules§

pool
Client Connection Pooling
request
Client Requests
response
Client Responses

Structs§

Client
A Client to use additional features with Requests.
ProxyConfig
Proxy server configuration with a custom connector and TLS wrapper.
RequestBuilder
Options for an individual Request.

Enums§

Body
An enum of possible body types for a Request.
RedirectPolicy
Behavior regarding how to handle redirects within a Client.

Traits§

IntoUrl
A helper trait to convert common objects into a Url.