1
0
mirror of https://github.com/actix/actix-website synced 2024-11-23 16:31:08 +01:00
actix-website/docs/getting-started.md
Hichem Fantar ad4aeac34f
TypeScript compatibility (#379)
* Update file extensions and exports for TypeScript compatibility

* docs: fix typo in getting-started.md

* chore: add no-trailing-punctuation rule to VS Code settings

* feat: add @docusaurus/theme-mermaid for mermaid diagram support

* Update import paths for MermaidDiagram component

* remove redudndant check, use effect only runs after the component is mounted

* Update docusaurus.config.ts to fix syntax error

* bring back check because it's not possible to properly cancel a dynamic import

* feat: optimize dynamic import in CodeBlock component

* chore: update VS Code extensions.json with eslint recommendation

* Update docusaurus.config.ts to add GitHub repository link in header
2024-05-28 19:23:34 +00:00

2.5 KiB

title
Getting Started

import RenderCodeBlock from '@theme/CodeBlock'; import CodeBlock from "@site/src/components/code_block"; import vars from "@site/vars";

Installing Rust

If you don't have Rust yet, we recommend you use rustup to manage your Rust installation. The official rust guide has a wonderful section on getting started.

Actix Web currently has a minimum supported Rust version (MSRV) of { vars.rustVersion }. Running rustup update will ensure you have the latest and greatest Rust version available. As such, this guide assumes you are running Rust { vars.rustVersion } or later.

Hello, world!

Start by creating a new binary-based Cargo project and changing into the new directory:

cargo new hello-world
cd hello-world

Add actix-web as a dependency of your project by adding the following to your Cargo.toml file.

{`[dependencies] actix-web = "${vars.actixWebMajorVersion}"`}

Request handlers use async functions that accept zero or more parameters. These parameters can be extracted from a request (see FromRequest trait) and returns a type that can be converted into an HttpResponse (see Responder trait):

Replace the contents of src/main.rs with the following:

Notice that some of these handlers have routing information attached directly using the built-in macros. These allow you to specify the method and path that the handler should respond to. You will see below how to register manual_hello (i.e. routes that do not use a routing macro).

Next, create an App instance and register the request handlers. Use App::service for the handlers using routing macros and App::route for manually routed handlers, declaring the path and method. Finally, the app is started inside an HttpServer which will serve incoming requests using your App as an "application factory".

Further append the following main function to src/main.rs:

That's it! Compile and run the program with cargo run. The #[actix_web::main] macro executes the async main function within the actix runtime. Now you can go to http://127.0.0.1:8080/ or any of the other routes you defined to see the results.