Crate rouille_maint_in

Source
Expand description

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§

Modules§

  • Allows you to let an external process handle the request through CGI.
  • 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 Accept header.
  • 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 post module for general documentation.
  • 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.
  • Equivalent to a match expression but for routes.
  • 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.
  • 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§

  • 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 Read and Write traits.
  • 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-stream if 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 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.
  • Starts a server and uses the given requests handler.
  • Identical to start_server but uses a ThreadPool of the given size.