---
title: Getting Started
menu: docs_basics
weight: 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:

```bash
cargo new hello-world
cd hello-world
```

Now, add `actix-web` as dependencies of your project by ensuring your `Cargo.toml`
contains the following:

```ini
[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 zero or more parameters that can be
extracted from a request (ie, `impl FromRequest`) and returns a type that can be
converted into an `HttpResponse` (ie, `impl Responder`):

{{< include-example example="getting-started" section="setup" >}}

Next, create an `App` instance and register the request handler with the application's
`route` on a *path* and with a particular *HTTP method*. After that, the application
instance can be used with `HttpServer` to listen for incoming connections. The server
accepts a function that should return an application factory.

{{< include-example example="getting-started" section="main" >}}

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][autoload].

[autoload]: ../autoreload/