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()
.