mirror of
https://github.com/actix/actix-web.git
synced 2024-12-21 07:36:43 +00:00
Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
c5907747ad
Rationale: - In Rust, one can omit a semicolon after a function's final expression to make its value the function's return value. It's common for people to include a semicolon after the last expression by mistake - common enough that the Rust compiler suggests removing the semicolon when there's a type mismatch between the function's signature and body. By implementing Responder for (), Actix makes this common mistake a silent error in handler functions. - Functions returning an empty body should return HTTP status 204 ("No Content"), so the current Responder impl for (), which returns status 200 ("OK"), is not really what one wants anyway. - It's not much of a burden to ask handlers to explicitly return `HttpResponse::Ok()` if that is what they want; all the examples in the documentation do this already. |
||
---|---|---|
actix-cors | ||
actix-files | ||
actix-framed | ||
actix-http | ||
actix-identity | ||
actix-multipart | ||
actix-session | ||
actix-web-actors | ||
actix-web-codegen | ||
awc | ||
examples | ||
src | ||
test-server | ||
tests | ||
.appveyor.yml | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
CHANGES.md | ||
CODE_OF_CONDUCT.md | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
MIGRATION.md | ||
README.md | ||
rustfmt.toml |
Actix web
Actix web is a simple, pragmatic and extremely fast web framework for Rust.
- Supported HTTP/1.x and HTTP/2.0 protocols
- Streaming and pipelining
- Keep-alive and slow requests handling
- Client/server WebSockets support
- Transparent content compression/decompression (br, gzip, deflate)
- Configurable request routing
- Multipart streams
- Static assets
- SSL support with OpenSSL or Rustls
- Middlewares (Logger, Session, CORS, etc)
- Includes an asynchronous HTTP client
- Supports Actix actor framework
Documentation & community resources
- User Guide
- API Documentation (1.0)
- Chat on gitter
- Cargo package: actix-web
- Minimum supported Rust version: 1.39 or later
Example
use actix_web::{web, App, HttpServer, Responder};
async fn index(info: web::Path<(u32, String)>) -> impl Responder {
format!("Hello {}! id:{}", info.1, info.0)
}
fn main() -> std::io::Result<()> {
HttpServer::new(
|| App::new().service(
web::resource("/{id}/{name}/index.html").to(index)))
.bind("127.0.0.1:8080")?
.run()
}
More examples
- Basics
- Stateful
- Multipart streams
- Simple websocket
- Tera / Askama templates
- Diesel integration
- r2d2
- SSL / HTTP/2.0
- Tcp/Websocket chat
- Json
You may consider checking out this directory for more examples.
Benchmarks
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Code of Conduct
Contribution to the actix-web crate is organized under the terms of the Contributor Covenant, the maintainer of actix-web, @fafhrd91, promises to intervene to uphold that code of conduct.