1
0
mirror of https://github.com/actix/examples synced 2024-11-27 16:02:57 +01:00

Actix Web

This commit is contained in:
Rob Ede 2022-02-06 08:13:24 +00:00
parent 120d33057a
commit 8ae47c8cda
No known key found for this signature in database
GPG Key ID: 97C636207D3EF933
16 changed files with 26 additions and 29 deletions

View File

@ -17,7 +17,7 @@
- [Nitro Repo](https://github.com/wherkamp/nitro_repo): An open source artifact manager. Rust back-end and Vue front-end. - [Nitro Repo](https://github.com/wherkamp/nitro_repo): An open source artifact manager. Rust back-end and Vue front-end.
- [Imitari](https://github.com/imitari/imitari): A lightweight ShareX-compatible image uploader server - [Imitari](https://github.com/imitari/imitari): A lightweight ShareX-compatible image uploader server
- [mCaptcha](https://github.com/mCaptcha/mCaptcha/): Proof of work based, privacy focused, libre CAPTCHA system. Crates used: `actix-web`, `sqlx`, `redis`, and `lettre`. - [mCaptcha](https://github.com/mCaptcha/mCaptcha/): Proof of work based, privacy focused, libre CAPTCHA system. Crates used: `actix-web`, `sqlx`, `redis`, and `lettre`.
- [Zero2prod](https://github.com/LukeMathWalker/zero-to-production/): Source code of zero to production series [zero2prod.com](https://www.zero2prod.com). Paid book but some of the chapters is available online for free. The book compares and explains the chosen technologies, like actix-web and sqlx. - [Zero2prod](https://github.com/LukeMathWalker/zero-to-production/): Source code of zero to production series [zero2prod.com](https://www.zero2prod.com). Paid book but some of the chapters is available online for free. The book compares and explains the chosen technologies, like Actix Web and SQLx.
- [Triox](https://github.com/Trioxidation/Triox): A free file hosting server that focuses on speed, reliability and security. - [Triox](https://github.com/Trioxidation/Triox): A free file hosting server that focuses on speed, reliability and security.
- [binserve](https://github.com/mufeedvh/binserve): A fast, secure, and easy to set up static web server written on top of Actix Web with routing, templating, and various other features. - [binserve](https://github.com/mufeedvh/binserve): A fast, secure, and easy to set up static web server written on top of Actix Web with routing, templating, and various other features.
- [Roseline](https://github.com/DoumanAsh/roseline.rs): A personal web site and discord & IRC bot to access simple SQLite database. Demonstrates usage of various Actix and Actix Web concepts. - [Roseline](https://github.com/DoumanAsh/roseline.rs): A personal web site and discord & IRC bot to access simple SQLite database. Demonstrates usage of various Actix and Actix Web concepts.
@ -29,7 +29,7 @@
## Community Articles, Example Apps, Starters & Boilerplate Projects ## Community Articles, Example Apps, Starters & Boilerplate Projects
- [Jelly Starter](https://github.com/secretkeysio/jelly-actix-web-starter): A starter template for actix-web projects that feels very Django-esque. Avoid the boring stuff and move faster. - [Jelly Starter](https://github.com/secretkeysio/jelly-actix-web-starter): A starter template for Actix Web projects that feels very Django-esque. Avoid the boring stuff and move faster.
- [Actix and SQLx User CRUD for MySQL](https://github.com/jamesjmeyer210/actix_sqlx_mysql_user_crud): A User CRUD showcasing MySQL database interaction with full integration test coverage, designed to fit comfortably in a system of micro-services. - [Actix and SQLx User CRUD for MySQL](https://github.com/jamesjmeyer210/actix_sqlx_mysql_user_crud): A User CRUD showcasing MySQL database interaction with full integration test coverage, designed to fit comfortably in a system of micro-services.
- [Rust, Actix Web & Heroku](https://github.com/emk/rust-buildpack-example-actix): A Heroku buildpack example for Actix Web. - [Rust, Actix Web & Heroku](https://github.com/emk/rust-buildpack-example-actix): A Heroku buildpack example for Actix Web.
- [webapp.rs](https://github.com/saschagrunert/webapp.rs): A web application completely written in Rust. - [webapp.rs](https://github.com/saschagrunert/webapp.rs): A web application completely written in Rust.
@ -39,7 +39,7 @@
- [Complete Actix 2.x REST Server](https://github.com/ddimaria/rust-actix-example): Actix 2.x HTTP Server featuring multi-database support, auth/JWTs, caching, static files, app state, tests, coverage, and docker. - [Complete Actix 2.x REST Server](https://github.com/ddimaria/rust-actix-example): Actix 2.x HTTP Server featuring multi-database support, auth/JWTs, caching, static files, app state, tests, coverage, and docker.
- [Actix Server Authentication with JWT and MongoDB](https://github.com/emreyalvac/actix-web-jwt/): An implementation of JWT in Actix. - [Actix Server Authentication with JWT and MongoDB](https://github.com/emreyalvac/actix-web-jwt/): An implementation of JWT in Actix.
- [Production-Grade Logging in Rust Applications](https://medium.com/better-programming/production-grade-logging-in-rust-applications-2c7fffd108a6): An article showcasing the use of [tracing](https://github.com/tokio-rs/tracing) in an Actix application - [Production-Grade Logging in Rust Applications](https://medium.com/better-programming/production-grade-logging-in-rust-applications-2c7fffd108a6): An article showcasing the use of [tracing](https://github.com/tokio-rs/tracing) in an Actix application
- [Fullstack-Rust](https://github.com/vascokk/fullstack-rust): A Full Stack Rust application (Connect5 game) with Actix-web, Yew, Bulma CSS and Diesel. - [Fullstack-Rust](https://github.com/vascokk/fullstack-rust): A Full Stack Rust application (Connect5 game) with Actix Web, Yew, Bulma CSS and Diesel.
- [Mozilla Services Skeleton App](https://github.com/mozilla-services/skeleton) - [Mozilla Services Skeleton App](https://github.com/mozilla-services/skeleton)
## Paid Resources ## Paid Resources

View File

@ -84,7 +84,7 @@ async fn main() -> io::Result<()> {
.wrap(middleware::Compress::default()) .wrap(middleware::Compress::default())
// cookie session middleware // cookie session middleware
.wrap(CookieSession::signed(&[0; 32]).secure(false)) .wrap(CookieSession::signed(&[0; 32]).secure(false))
// enable logger - always register actix-web Logger middleware last // enable logger - always register Actix Web Logger middleware last
.wrap(middleware::Logger::default()) .wrap(middleware::Logger::default())
// register favicon // register favicon
.service(favicon) .service(favicon)

View File

@ -1 +1 @@
This project illustrates custom error propagation through futures in actix-web This project illustrates custom error propagation through futures in Actix Web.

View File

@ -1,4 +1,4 @@
This is a contrived example intended to illustrate a few important actix-web features. This is a contrived example intended to illustrate a few important Actix Web features.
*Imagine* that you have a process that involves 3 steps. The steps here *Imagine* that you have a process that involves 3 steps. The steps here
are dumb in that they do nothing other than call an HTTP endpoint that are dumb in that they do nothing other than call an HTTP endpoint that
@ -10,7 +10,7 @@ Actix Web features illustrated here include:
1. handling json input param 1. handling json input param
2. validating user-submitted parameters using the 'validator' crate 2. validating user-submitted parameters using the 'validator' crate
2. actix-web client features: 2. `awc` client features:
- POSTing json body - POSTing json body
3. chaining futures into a single response used by an asynch endpoint 3. chaining futures into a single response used by an asynch endpoint

View File

@ -1,14 +1,14 @@
// This is a contrived example intended to illustrate actix-web features. // This is a contrived example intended to illustrate Actix Web features.
// *Imagine* that you have a process that involves 3 steps. The steps here // *Imagine* that you have a process that involves 3 steps. The steps here
// are dumb in that they do nothing other than call an // are dumb in that they do nothing other than call an
// httpbin endpoint that returns the json that was posted to it. The intent // httpbin endpoint that returns the json that was posted to it. The intent
// here is to illustrate how to chain these steps together as futures and return // here is to illustrate how to chain these steps together as futures and return
// a final result in a response. // a final result in a response.
// //
// Actix-web features illustrated here include: // Actix Web features illustrated here include:
// 1. handling json input param // 1. handling json input param
// 2. validating user-submitted parameters using the 'validator' crate // 2. validating user-submitted parameters using the 'validator' crate
// 2. actix-web client features: // 2. `awc` client features:
// - POSTing json body // - POSTing json body
// 3. chaining futures into a single response used by an async endpoint // 3. chaining futures into a single response used by an async endpoint

View File

@ -3,11 +3,9 @@
Demonstrates how to shutdown the web server in a couple of ways: Demonstrates how to shutdown the web server in a couple of ways:
1. remotely, via http request 1. remotely, via http request
- Created in response to actix/actix-web#1315 - Created in response to actix/actix-web#1315
1. sending a SIGINT signal to the server (control-c)
2. sending a SIGINT signal to the server (control-c) - actix-server natively supports SIGINT
- actix-server natively supports SIGINT
## Usage ## Usage
@ -24,6 +22,6 @@ cargo run --bin shutdown-server
### Available Routes ### Available Routes
- [GET /hello](http://localhost:8080/hello) - [GET /hello](http://localhost:8080/hello)
- Regular hello world route - Regular hello world route
- [POST /stop](http://localhost:8080/stop) - [POST /stop](http://localhost:8080/stop)
- Calling this will shutdown the server and exit - Calling this will shutdown the server and exit

View File

@ -10,7 +10,7 @@
//! //!
//! We retrieve our app state within our handlers with a `state: Data<...>` argument. //! We retrieve our app state within our handlers with a `state: Data<...>` argument.
//! //!
//! By default, `actix-web` runs one [`App`] per logical cpu core. //! By default, Actix Web runs one [`App`] per logical cpu core.
//! When running on `<N>` cores, we see that the example will increment `counter_mutex` (global state via //! When running on `<N>` cores, we see that the example will increment `counter_mutex` (global state via
//! Mutex) and `counter_atomic` (global state via Atomic variable) each time the endpoint is called, //! Mutex) and `counter_atomic` (global state via Atomic variable) each time the endpoint is called,
//! but only appear to increment `counter_cell` every Nth time on average (thread-local state). This //! but only appear to increment `counter_cell` every Nth time on average (thread-local state). This

View File

@ -1,4 +1,4 @@
Getting started using databases with Actix web, asynchronously. Getting started using databases with Actix Web, asynchronously.
## Usage ## Usage

View File

@ -1,4 +1,4 @@
People developing rbatis have an example on usage with actix-web. People developing rbatis have an example on usage with Actix Web.
<br/> <br/>
You can find the example in the [rbatis/example/src/actix_web](https://github.com/rbatis/rbatis/blob/master/example/src/actix_web/main.rs) directory. You can find the example in the [rbatis/example/src/actix_web](https://github.com/rbatis/rbatis/blob/master/example/src/actix_web/main.rs) directory.
<br/> <br/>

View File

@ -1,4 +1,4 @@
## Auth Web Microservice with rust using Actix-Web 1.0 ## Auth Web Microservice with Rust using Actix Web
### Flow of the event would look like this: ### Flow of the event would look like this:

View File

@ -1,6 +1,6 @@
//! Actix web juniper example //! Actix web juniper example
//! //!
//! A simple example integrating juniper in actix-web //! A simple example integrating juniper in Actix Web
use std::io; use std::io;
use std::sync::Arc; use std::sync::Arc;

View File

@ -1,4 +1,4 @@
A simple demo for building a `JSONRPC over HTTP` server in [actix-web](https://github.com/actix/actix-web). A simple demo for building a `JSONRPC over HTTP` server using [Actix Web](https://github.com/actix/actix-web).
# Server # Server

View File

@ -10,8 +10,7 @@ Hello world!
``` ```
Although this will only one thread for handling incoming connections Although this will only one thread for handling incoming connections
according to the according to the [documentation](https://actix.github.io/actix-web/actix_web/struct.HttpServer.html#method.bind_uds).
[documentation](https://actix.github.io/actix-web/actix_web/struct.HttpServer.html#method.bind_uds).
And it does not delete the socket file (`/tmp/actix-uds.socket`) when stopping And it does not delete the socket file (`/tmp/actix-uds.socket`) when stopping
the server, so it will fail to start next time you run it unless you delete the server, so it will fail to start next time you run it unless you delete

View File

@ -12,7 +12,7 @@ async fn main() -> std::io::Result<()> {
HttpServer::new(|| { HttpServer::new(|| {
App::new() App::new()
// enable logger - always register actix-web Logger middleware last // enable logger - always register Actix Web Logger middleware last
.wrap(middleware::Logger::default()) .wrap(middleware::Logger::default())
.service( .service(
web::resource("/index.html") web::resource("/index.html")

View File

@ -40,7 +40,7 @@ async fn main() -> std::io::Result<()> {
.name("auth-example") .name("auth-example")
.secure(false), .secure(false),
)) ))
// enable logger - always register actix-web Logger middleware last // enable logger - always register Actix Web Logger middleware last
.wrap(middleware::Logger::default()) .wrap(middleware::Logger::default())
.service(web::resource("/login").route(web::post().to(login))) .service(web::resource("/login").route(web::post().to(login)))
.service(web::resource("/logout").to(logout)) .service(web::resource("/logout").to(logout))

View File

@ -85,7 +85,7 @@ async fn main() -> std::io::Result<()> {
App::new() App::new()
// redis session middleware // redis session middleware
.wrap(RedisSession::new("127.0.0.1:6379", &private_key.master())) .wrap(RedisSession::new("127.0.0.1:6379", &private_key.master()))
// enable logger - always register actix-web Logger middleware last // enable logger - always register Actix Web Logger middleware last
.wrap(middleware::Logger::default()) .wrap(middleware::Logger::default())
.service(resource("/").route(get().to(index))) .service(resource("/").route(get().to(index)))
.service(resource("/do_something").route(post().to(do_something))) .service(resource("/do_something").route(post().to(do_something)))