Crate rouille_maint_in[][src]


NOTE

This is a maintenace release of rouille, not by its original author, and not endorsed or supported by him. The aim of the release is to minimally update the code to the 2018 edition of Rust, and upgrade several dependencies to avoid crate duplication. This crate should be a drop-in replacement for rouille-3.0.0. To use it, update Cargo.toml to say:

rouille = { version = "3", package = "rouille-maint-in" }


The rouille library is very easy to get started with.

Listening to a port is done by calling the start_server function:

use rouille::Request;
use rouille::Response;

rouille::start_server("0.0.0.0:80", move |request| {
    Response::text("hello world")
});

Whenever an HTTP request is received on the address passed as first parameter, the closure passed as second parameter is called. This closure must then return a Response that will be sent back to the client.

See the documentation of start_server for more details.

Analyzing the request

The parameter that the closure receives is a Request object that represents the request made by the client.

The Request object itself provides some getters, but most advanced functionnalities are provided by other modules of this crate.

  • In order to dispatch between various code depending on the URL, you can use the router! macro.
  • In order to analyze the body of the request, like handling JSON input, form input, etc. you can take a look at the input module.

Returning a response

Once you analyzed the request, it is time to return a response by returning a Response object.

All the members of Response are public, so you can customize it as you want. There are also several constructors that you build a basic Response which can then modify.

In order to serve static files, take a look at the match_assets function.

Re-exports

pub extern crate percent_encoding;
pub extern crate url;

Modules

cgi

Allows you to let an external process handle the request through CGI.

content_encoding
input

Analyze the request’s headers and body.

proxy

Dispatch a request to another HTTP server.

session

Sessions handling.

websocket

Support for websockets.

Macros

accept

Dispatches between blocks depending on the value of the Accept header.

assert_or_400

This macro assumes that the current function returns a Response. If the condition you pass to the macro is false, then a 400 response is returned.

find_route

Evaluates each parameter until one of them evaluates to something else than a 404 error code.

post_input

Parse input from HTML forms. See the post module for general documentation.

response_panic

Calls the panic! macro from the standard library wrapped in a Response-typed expression, to avoid the compiler complaining about unreachable paths in certain styles of router! blocks. The macro supports exactly the same types of arguments as the one in std.

router

Equivalent to a match expression but for routes.

try_or_400

This macro assumes that the current function returns a Response and takes a Result. If the expression you pass to the macro is an error, then a 400 response is returned.

try_or_404

This macro assumes that the current function returns a Response and takes a Result. If the expression you pass to the macro is an error, then a 404 response is returned.

Structs

HeadersIter

Iterator to the list of headers in a request.

Request

Represents a request that your handler must answer to.

RequestBody

Gives access to the body of a request.

Response

Contains a prototype of a response.

ResponseBody

An opaque type that represents the body of a response.

Server

A listening server.

Constants

DEFAULT_ENCODE_SET

Traits

ReadWrite

Dummy trait that regroups the Read and Write traits.

Upgrade

Trait for objects that can take ownership of a raw connection to the client data.

Functions

extension_to_mime

Returns the mime type of a file based on its extension, or application/octet-stream if the extension is unknown.

log

Adds a log entry to the given writer for each request.

log_custom

Calls custom logging functions after processing a request.

match_assets

Searches inside path for a file that matches the given request. If a file is found, returns a Response that would serve this file if returned. If no file is found, a 404 response is returned instead.

start_server

Starts a server and uses the given requests handler.

start_server_with_pool

Identical to start_server but uses a ThreadPool of the given size.