Crate tiny_http [] [src]

Simple usage

Creating the server

The easiest way to create a server is to call Server::new().

The new() function returns an IoResult<Server> which will return an error in the case where the server creation fails (for example if the listening port is already occupied).

let server = tiny_http::ServerBuilder::new().build().unwrap();

A newly-created Server will immediatly start listening for incoming connections and HTTP requests.

Receiving requests

Calling server.recv() will block until the next request is available. This function returns an IoResult<Request>, so you need to handle the possible errors.


loop {
    // blocks until the next request is received
    let request = match server.recv() {
        Ok(rq) => rq,
        Err(e) => { println!("error: {}", e); break }
    };

    // do something with the request
    // ...
}

In a real-case scenario, you will probably want to spawn multiple worker tasks and call server.recv() on all of them. Like this:

let server = Arc::new(server);
let mut guards = Vec::with_capacity(4);

for _ in (0 .. 4) {
    let server = server.clone();

    let guard = thread::spawn(move || {
        loop {
            let rq = server.recv().unwrap();

            // ...
        }
    });

    guards.push(guard);
}

If you don't want to block, you can call server.try_recv() instead.

Handling requests

The Request object returned by server.recv() contains informations about the client's request. The most useful methods are probably request.get_method() and request.get_url() which return the requested method (GET, POST, etc.) and url.

To handle a request, you need to create a Response object. See the docs of this object for more infos. Here is an example of creating a Response from a file:

let response = tiny_http::Response::from_file(File::open(&Path::new("image.png")).unwrap());

All that remains to do is call request.respond():

request.respond(response)

Structs

HTTPVersion

HTTP version (usually 1.0 or 1.1).

Header

Represents a HTTP header.

HeaderField

Field of a header (eg. Content-Type, Content-Length, etc.)

IncomingRequests
Method

HTTP method (eg. GET, POST, etc.)

Request

Represents an HTTP request made by a client.

Response

Object representing an HTTP response whose purpose is to be given to a Request.

Server

The main class of this library.

ServerBuilder

Object which allows you to build a server.

StatusCode

Status code of a request or response.

Type Definitions

ResponseBox

A Response without a template parameter.