Unlike other code I've seen in the guide, this code didn't compile. It's especially bad that it can be the first experience someone has with actix-web, and then doesn't work. I'm going to run through the docs as a first-time user so I'll try to make sure everything works the way it's supposed to.
1.8 KiB
title | menu | weight |
---|---|---|
Getting Started | docs_basics | 130 |
Getting Started
Let’s write our first actix web application!
Hello, world!
Start by creating a new binary-based Cargo project and changing into the new directory:
cargo new hello-world --bin
cd hello-world
Now, add actix-web
as dependencies of your project by ensuring your Cargo.toml
contains the following:
[dependencies]
actix-web = "{{< actix-version "actix-web" >}}"
In order to implement a web server, we first need to create a request handler.
A request handler is a function that accepts an HttpRequest
instance as its only parameter
and returns a type that can be converted into HttpResponse
:
Filename: src/main.rs
extern crate actix_web;
use actix_web::{HttpRequest, App, server};
fn index(_req: HttpRequest) -> &'static str {
"Hello world!"
}
Next, create an Application
instance and register the request handler with
the application's resource
on a particular HTTP method and path and
after that, the application instance can be used with HttpServer
to listen
for incoming connections. The server accepts a function that should return an
HttpHandler
instance. For simplicity server::new
could be used, this
function is shortcut for HttpServer::new
:
fn main() {
server::new(|| {
App::new()
.resource("/", |r| r.f(index))
})
.bind("127.0.0.1:8088").unwrap()
.run();
}
That's it! Now, compile and run the program with cargo run
.
Head over to http://localhost:8088/
to see the results.
If you want you can have an automatic reloading server during development that recompiles on demand. To see how this can be accomplished have a look at the autoreload pattern.