mirror of
https://github.com/actix/actix-website
synced 2024-11-28 02:22:57 +01:00
553fe281fc
This fixes #105
73 lines
2.3 KiB
Markdown
73 lines
2.3 KiB
Markdown
---
|
||
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.
|
||
|
||
### Alternative syntax
|
||
|
||
You might prefer the alternative syntax provided by [actix-web-codegen] which
|
||
allows you to specify the routes above your functions like so:
|
||
|
||
{{< include-example example="getting-started" section="alternative">}}
|
||
|
||
You can then declare this function using `service()`:
|
||
|
||
```rust
|
||
App::new()
|
||
.service(index3)
|
||
```
|
||
|
||
For consistency reasons, this documentation only uses the regular syntax shown at the
|
||
beginning of this page. However, if you prefer this syntax you should feel free to
|
||
use it any time you declare a route as it's only syntactic sugar.
|
||
|
||
### Auto-reloading
|
||
|
||
If you want, you can have an automatically reloading server during development
|
||
that recompiles on demand. This isn't necessary, but it makes rapid prototyping
|
||
more convenient as you can see changes instantly upon saving.
|
||
To see how this can be accomplished, have a look at the [autoreload pattern][autoload].
|
||
|
||
[actix-web-codegen]: https://docs.rs/actix-web-codegen/0.1.2/actix_web_codegen/
|
||
[autoload]: ../autoreload/
|