Expand description
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 functionalities 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
inputmodule.
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.
In order to apply content encodings (including compression such as gzip or deflate), see the content_encoding module, and specifically the content_encoding::apply function.
Re-exports
pub extern crate percent_encoding;pub extern crate url;
Modules
- Allows you to let an external process handle the request through CGI.
- Apply content encodings (such as gzip compression) to the response.
- Analyze the request’s headers and body.
- Dispatch a request to another HTTP server.
- Sessions handling.
- Support for websockets.
Macros
- Dispatches between blocks depending on the value of the
Acceptheader. - 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. - Evaluates each parameter until one of them evaluates to something else than a 404 error code.
- Parse input from HTML forms. See the
postmodule for general documentation. - Equivalent to a
matchexpression but for routes. - This macro assumes that the current function returns a
Responseand takes aResult. If the expression you pass to the macro is an error, then a 400 response is returned. - This macro assumes that the current function returns a
Responseand takes aResult. If the expression you pass to the macro is an error, then a 404 response is returned.
Structs
- Iterator to the list of headers in a request.
- Represents a request that your handler must answer to.
- Gives access to the body of a request.
- Contains a prototype of a response.
- An opaque type that represents the body of a response.
- A listening server.
Constants
Traits
- Dummy trait that regroups the
ReadandWritetraits. - Trait for objects that can take ownership of a raw connection to the client data.
Functions
- Returns the mime type of a file based on its extension, or
application/octet-streamif the extension is unknown. - Adds a log entry to the given writer for each request.
- Calls custom logging functions after processing a request.
- Searches inside
pathfor a file that matches the given request. If a file is found, returns aResponsethat would serve this file if returned. If no file is found, a 404 response is returned instead. - Starts a server and uses the given requests handler.
- Identical to
start_serverbut uses aThreadPoolof the given size.