1
0
mirror of https://github.com/actix/actix-extras.git synced 2024-11-27 17:22:57 +01:00
Go to file
2017-12-05 11:50:09 -08:00
examples update examples 2017-12-04 16:32:31 -08:00
guide update guide 2017-12-04 20:38:38 -08:00
src update tests 2017-12-05 11:43:41 -08:00
tests update tests 2017-12-05 11:43:41 -08:00
.appveyor.yml fix appveyor config for gnu target 2017-11-07 09:43:39 -08:00
.gitignore start working on guide 2017-11-27 16:41:37 -08:00
.travis.yml rename async to a 2017-12-04 16:09:22 -08:00
build.rs added default headers middleware 2017-12-03 20:47:15 -08:00
Cargo.toml handler info 2017-12-01 21:29:22 -08:00
CHANGES.md refactor streaming responses 2017-11-30 14:42:20 -08:00
LICENSE prep work 2017-09-30 09:10:03 -07:00
Makefile more guide 2017-11-28 18:00:10 -08:00
README.md simple readme example 2017-12-05 11:50:09 -08:00

Actix web Build Status Build status codecov crates.io

Asynchronous web framework for Actix.


Actix web is licensed under the Apache-2.0 license.

Features

  • Supported HTTP/1 and HTTP/2 protocols
  • Streaming and pipelining
  • Keep-alive and slow requests handling
  • WebSockets
  • Transparent content compression/decompression (br, gzip, deflate)
  • Configurable request routing
  • Multipart streams
  • Middlewares (Logger, Session included)

Usage

To use actix-web, add this to your Cargo.toml:

[dependencies]
actix-web = { git = "https://github.com/actix/actix-web" }

HTTP/2

Actix web automatically upgrades connection to http/2 if possible.

Negotiation

HTTP/2 protocol over tls without prior knowlage requires tls alpn. At the moment only rust-openssl supports alpn.

[dependencies]
actix-web = { git = "https://github.com/actix/actix-web", features=["alpn"] }

Upgrade to http/2 schema described in rfc section 3.2 is not supported. Starting http/2 with prior knowledge is supported for both clear text connection and tls connection. rfc section 3.4

tls example

Example

# extern crate actix;
# extern crate actix_web;
# 
use actix::*;
use actix_web::*;

fn index(req: HttpRequest) -> String {
    format!("Hello {}!", &req.match_info()["name"])
}

fn main() {
    let sys = actix::System::new("ws-example");

    HttpServer::new(
        Application::default("/")
            .resource("/{name}", |r| r.method(Method::GET).f(index)))
        .serve::<_, ()>("127.0.0.1:8080").unwrap();

    Arbiter::system().send(msgs::SystemExit(0));
    let _ = sys.run();
}