Changelog
Version [Unreleased]
Version 3.0.0
- Bumped the
multipart crate and updated rouille's mutipart API to match it.
Version 2.2.0
- Bump minimum supported Rust version to 1.20.0.
- Expose that the
Request body (accessible with request.data()) has a Send bound.
Version 2.1.0
- Replace
flate2 with deflate - Fixed handling of url-encoded path components in route!() macro. Previously, URL was eagerly decoded and thus would fail to match intended routes if special characters were used (such as ? or /). Now, individual matched components are decoded after matching.
- Added
Response::empty_204. - Added ssl feature and new_ssl constructor to Server, for https support. The certificate and private key must be supplied by user.
Version 2.0.0
- Dropped the use of rustc-serialize in favor of using serde.
- Updated
multipart to 0.13. The input::multipart::get_multipart_input function returns types reexported from multipart which have small but breaking API changes. - Update
Server with an option to use a thread pool to process requests
Version 1.0.0
input::cookies changed to return an iterator that yields (&str, &str).
Version 0.4.2
- The
content_encoding module now supports brotli. - Added an
accept! macro similar to a match expression that chooses a block depending on the value of the Accept header of the request. - Added
proxy::full_proxy. It behaves the same as proxy but returns more status codes and less errors. - Added
Response::from_data, from_file, with_content_disposition_attachment, empty_406, with_public_cache, with_private_cache, with_no_cache, without_header, with_additional_header and with_unique_header for easier response manipulation. - Added
Request::headers() that provides an iterator to the list of headers. - Added
input::priority_header_preferred and input::parse_priority_header to easily parse request headers such as Accept or Accept-Language. - MIME types that contain “font” are now also compressed by the
content_encoding module. - Changed
text/xml to application/xml in the MIME types auto-determination.
Version 0.4.1
- Added a
Server struct as an alternative to start_server for manual control over the behavior. - Added a
content_encoding::apply function that applies Content-Encoding to a response. - The
try_or_400! macro now returns a response whose body describes the error in JSON. - The
try_or_400! macro now requires the error to implement the std::error::Error trait.
Version 0.4.0
- Added support for websockets with the
websocket module. - Added
Request::do_not_track() to query the DNT header. - Renamed
get_json_input() to json_input(). - Renamed
get_cookies() to cookies(). - Renamed
get_basic_http_auth() to basic_http_auth(). - The logs now show the time of the start of the request processing.
Request::header() now returns a Option<&str> instead of Option<String>.Response::svg() and Response::html() now take a Into<String> instead of a Into<Vec<u8>>.- Renamed
Response::error() and success() to is_error() and is_success(). - The
headers field of Response are now Vec<(Cow<'static, str>, Cow<'static, str>)> instead of Vec<(String, String)>. - Removed
Response::redirect and replaced it with redirect_301, redirect_302, etc. - Added
Response::with_etag() to add an ETag header to a response. - Added an
upgrade field to Response, necessary for websockets. - Fixed being able to set the value of the Content-Length and Transfer-Encoding headers.
plain_text_body now has a limit of 1 MB of data before returning an error.- Added
plain_text_body_with_limit which does the same as plain_text_body but with a customizable limit. - Implemented the
std::error::Error trait on all error types. - Added
Response::into_reader_and_size() to retreive a Read object from a ResponseBody. - Fixed issue with static files not being found on Windows because of
/ and \ mismatch.
Version 0.3.3
- Added the
proxy module with basic reverse proxy.
Version 0.3.2
- Added the
rouille::input::plain_text_body function.
Version 0.3.1
- Empty Vecs are now allowed for POST input.
Version 0.3.0
- Reworked POST input. You can now use the
post_input! macro instead of creating a decodable struct. - Removed the
input::session module and replaced it with the session module. Sessions no longer store data in a hashmap, but instead only provide a way to generate a unique ID per client.
Version 0.2.0
- Fixed the
+ character in the query string not being replaced with a space as it should. Request::data() now returns an Option<impl Read> instead of a Vec<u8>. If data() is called twice, the second call will return None.RouteError has been removed. You are now encouraged to return a Response everywhere instead of a Result<Response, RouteError>.- The
try_or_400!, find_route! and assert_or_4OO! macros and the match_assets function have been adjusted for the previous change. - Added a
try_or_404! macro similar to try_or_400!. - In the case of a panic, the response with status code 500 that the server answers now contains a small text in its body, indicating the user that an internal server error occured.
- Added
Response::empty_400(), Response::empty_404(), Response::success() and Response::error().