Go to file
Maximilian Mader f1c3fc4867
`actix-files` Do not send a message body in the NOT_MODIFIED case
As per RFC7230 section 3.3.2 <https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2>:

> A server MAY send a Content-Length header field in a 304 (Not
> Modified) response to a conditional GET request (Section 4.1 of
> [RFC7232]);
> a server MUST NOT send Content-Length in such a response
> unless its field-value equals the decimal number of octets that would
> have been sent in the payload body of a 200 (OK) response to the same
> request.

And per RFC7232 section 4.1 <https://datatracker.ietf.org/doc/html/rfc7232#section-4.1>:

> A 304 response cannot contain a message-body; it is always terminated
> by the first empty line after the header fields.

Previously a `Content-Length: 0` header was sent because `.finish()`
sets the body to `Body::Empty`, which indicates a zero-sized response.
2021-08-01 21:03:11 +02:00
.github fix rustdoc uploads 2020-11-24 00:29:13 +00:00
actix-files `actix-files` Do not send a message body in the NOT_MODIFIED case 2021-08-01 21:03:11 +02:00
actix-http prepare actix-http and awc releases 2020-11-25 00:07:56 +00:00
actix-multipart Fix Multipart consuming payload before header checks (#1704) 2020-09-25 14:50:37 +01:00
actix-web-actors Drop content length headers from 101 responses (#1767) 2020-11-02 17:44:14 +09:00
actix-web-codegen Skip some tests that cause ICE on nightly (#1740) 2020-10-19 11:52:05 +09:00
awc prepare web 3.3.2 release 2020-12-01 22:22:46 +00:00
benches Fix leaks with actix_http's client (#1580) 2020-07-10 22:35:22 +01:00
docs/graphs prepare web and awc releases 2020-11-29 16:33:45 +00:00
examples expose on_connect v2 (#1754) 2020-10-30 02:03:26 +00:00
src Fix match_pattern() returning None for scope with resource of empty path (#1798) 2020-12-01 13:39:41 +00:00
test-server prepare actix-web and actix-http-test releases 2020-11-25 00:53:48 +00:00
tests make TrailingSlash enum accessible (#1673) 2020-09-13 00:55:39 +01:00
.gitignore make TrailingSlash enum accessible (#1673) 2020-09-13 00:55:39 +01:00
CHANGES.md prepare web 3.3.2 release 2020-12-01 22:22:46 +00:00
CODE_OF_CONDUCT.md Update CoC contact information 2020-10-31 12:06:51 +09:00
Cargo.toml prepare web 3.3.2 release 2020-12-01 22:22:46 +00:00
LICENSE-APACHE the big three point oh (#1668) 2020-09-11 13:50:10 +01:00
LICENSE-MIT the big three point oh (#1668) 2020-09-11 13:50:10 +01:00
MIGRATION.md Add TrailingSlash::MergeOnly behavior (#1695) 2020-09-25 12:50:59 +01:00
README.md prepare web 3.3.2 release 2020-12-01 22:22:46 +00:00
codecov.yml Remove codecoverage for tests and examples (#1299) 2020-01-24 05:10:02 +09:00
rustfmt.toml copy actix-web2 2019-03-01 22:51:32 -08:00

README.md

Actix web

Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust

crates.io Documentation Version License Dependency Status
Build Status codecov Download Join the chat at https://gitter.im/actix/actix Chat on Discord

Features

Documentation

Example

Dependencies:

[dependencies]
actix-web = "3"

Code:

use actix_web::{get, web, App, HttpServer, Responder};

#[get("/{id}/{name}/index.html")]
async fn index(web::Path((id, name)): web::Path<(u32, String)>) -> impl Responder {
    format!("Hello {}! id:{}", name, id)
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| App::new().service(index))
        .bind("127.0.0.1:8080")?
        .run()
        .await
}

More examples

You may consider checking out this directory for more examples.

Benchmarks

One of the fastest web frameworks available according to the TechEmpower Framework Benchmark.

License

This project is licensed under either of

at your option.

Code of Conduct

Contribution to the actix-web crate is organized under the terms of the Contributor Covenant, the maintainers of Actix web, promises to intervene to uphold that code of conduct.