mirror of
https://github.com/actix/actix-web.git
synced 2024-11-14 04:41:15 +00:00
Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
src | ||
tests | ||
.gitignore | ||
.travis.yml | ||
build.rs | ||
Cargo.toml | ||
LICENSE | ||
Makefile | ||
README.md |
Actix http
Actix http is a server http framework for Actix framework.
- API Documentation
- Cargo package: actix-http
- Minimum supported Rust version: 1.20 or later
Actix http is licensed under the Apache-2.0 license.
Features
- HTTP 1.1 and 1.0 support
- Streaming and pipelining support
- Keep-alive and slow requests support
- WebSockets support
- Configurable request routing
Usage
To use actix-web
, add this to your Cargo.toml
:
[dependencies]
actix-web = { git = "https://github.com/fafhrd91/actix-web.git" }
Example
extern crate actix;
extern crate actix_web;
extern crate futures;
use std::net;
use std::str::FromStr;
use actix::prelude::*;
use actix_web::*;
// Route
struct MyRoute;
impl Actor for MyRoute {
type Context = HttpContext<Self>;
}
impl Route for MyRoute {
type State = ();
fn request(req: HttpRequest, payload: Payload, ctx: &mut HttpContext<Self>) -> Reply<Self>
{
Reply::reply(httpcodes::HTTPOk)
}
}
fn main() {
let system = System::new("test");
// create routing map with `MyRoute` route
let mut routes = RoutingMap::default();
routes
.add_resource("/")
.post::<MyRoute>();
// start http server
let http = HttpServer::new(routes);
http.serve::<()>(
&net::SocketAddr::from_str("127.0.0.1:8880").unwrap()).unwrap();
// stop system
Arbiter::handle().spawn_fn(|| {
Arbiter::system().send(msgs::SystemExit(0));
futures::future::ok(())
});
system.run();
println!("Done");
}