1
0
mirror of https://github.com/actix/actix-website synced 2024-11-28 02:22:57 +01:00
actix-website/content/docs/getting-started.md
Lyle Mantooth e318f20a0c
Make Getting Started example compile
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.
2018-05-23 11:19:48 -04:00

1.8 KiB
Raw Blame History

title menu weight
Getting Started docs_basics 130

Getting Started

Lets 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.