From 4d8d53cea59bca095ca5c02ef81f0b1791736855 Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Sat, 12 Sep 2020 16:21:54 +0100 Subject: [PATCH] v3 (#188) --- .gitignore | 1 + .prettierrc.json | 13 + README.md | 21 +- config.toml | 16 +- content/_index.md | 2 +- content/code/_index.md | 18 +- content/code/license.md | 201 --------------- content/community/_index.md | 19 +- content/docs/_index.md | 27 +- content/docs/application.md | 109 ++++---- content/docs/autoreload.md | 52 ---- content/docs/databases.md | 66 +++-- content/docs/errors.md | 109 ++++---- content/docs/extractors.md | 22 +- content/docs/getting-started.md | 81 ++---- content/docs/handlers.md | 10 +- content/docs/http2.md | 12 +- content/docs/http_server_init.md | 9 +- content/docs/installation.md | 52 ---- content/docs/middleware.md | 15 +- content/docs/request.md | 6 +- content/docs/response.md | 4 +- content/docs/server.md | 30 +-- content/docs/testing.md | 10 +- content/docs/url-dispatch.md | 50 ++-- content/docs/websockets.md | 6 +- content/docs/whatis.md | 37 +-- examples/Cargo.toml | 38 ++- examples/application/Cargo.toml | 5 +- examples/application/src/app.rs | 13 +- examples/application/src/combine.rs | 13 +- examples/application/src/config.rs | 6 +- examples/application/src/main.rs | 4 +- examples/application/src/mutable_state.rs | 4 +- examples/application/src/scope.rs | 12 +- examples/application/src/state.rs | 10 +- examples/application/src/vh.rs | 4 +- examples/async-handlers/Cargo.toml | 3 +- examples/async-handlers/src/stream.rs | 13 +- examples/autoreload/Cargo.toml | 9 - examples/autoreload/src/main.rs | 22 -- examples/databases/Cargo.toml | 7 + examples/databases/src/main.rs | 63 +++++ examples/easy-form-handling/Cargo.toml | 3 +- examples/easy-form-handling/src/main.rs | 4 +- examples/either/Cargo.toml | 3 +- examples/either/src/main.rs | 10 +- examples/errors/Cargo.toml | 11 +- examples/errors/src/helpers.rs | 12 +- examples/errors/src/logging.rs | 25 +- examples/errors/src/main.rs | 10 +- examples/errors/src/override_error.rs | 38 +-- examples/errors/src/recommend_one.rs | 24 +- examples/errors/src/recommend_two.rs | 27 +- examples/extractors/Cargo.toml | 3 +- examples/extractors/src/form.rs | 11 +- examples/extractors/src/json_one.rs | 11 +- examples/extractors/src/json_two.rs | 28 +- examples/extractors/src/main.rs | 15 +- examples/extractors/src/multiple.rs | 25 +- examples/extractors/src/path_one.rs | 26 +- examples/extractors/src/path_three.rs | 21 +- examples/extractors/src/path_two.rs | 25 +- examples/extractors/src/query.rs | 11 +- examples/flexible-responders/Cargo.toml | 3 +- examples/flexible-responders/src/main.rs | 4 +- examples/getting-started/Cargo.toml | 3 +- examples/getting-started/src/main.rs | 30 +-- examples/http2/Cargo.toml | 3 +- examples/http2/src/main.rs | 4 +- examples/main-example/Cargo.toml | 3 +- examples/main-example/src/main.rs | 4 +- examples/middleware/Cargo.toml | 11 +- examples/middleware/src/default_headers.rs | 4 +- examples/middleware/src/errorhandler.rs | 6 +- examples/middleware/src/logger.rs | 4 +- examples/middleware/src/main.rs | 4 +- examples/middleware/src/user_sessions.rs | 6 +- examples/middleware/src/wrap_fn.rs | 4 +- examples/og_databases/Cargo.toml | 7 - examples/og_databases/src/main.rs | 98 ------- examples/powerful-extractors/Cargo.toml | 3 +- examples/powerful-extractors/src/main.rs | 4 +- examples/powerful-extractors/static/form.html | 2 +- examples/request-handlers/Cargo.toml | 3 +- examples/request-handlers/src/handlers_arc.rs | 14 +- examples/request-handlers/src/main.rs | 4 +- examples/request-routing/Cargo.toml | 3 +- examples/request-routing/src/main.rs | 4 +- examples/requests/Cargo.toml | 6 +- examples/requests/src/json_two.rs | 21 -- examples/requests/src/main.rs | 5 +- examples/requests/src/manual.rs | 12 +- examples/requests/src/streaming.rs | 9 +- examples/requests/src/urlencoded.rs | 9 +- examples/responder-trait/Cargo.toml | 3 +- examples/responder-trait/src/main.rs | 4 +- examples/responses/Cargo.toml | 3 +- examples/responses/src/auto.rs | 11 +- examples/responses/src/brotli.rs | 13 +- examples/responses/src/brotli_two.rs | 4 +- examples/responses/src/chunked.rs | 17 +- examples/responses/src/compress.rs | 11 +- examples/responses/src/identity.rs | 11 +- examples/responses/src/identity_two.rs | 16 +- examples/responses/src/json_resp.rs | 9 +- examples/responses/src/main.rs | 4 +- examples/server/Cargo.toml | 6 +- examples/server/src/keep_alive.rs | 4 +- examples/server/src/keep_alive_tp.rs | 1 + examples/server/src/main.rs | 4 +- examples/server/src/signals.rs | 7 +- examples/server/src/ssl.rs | 16 +- examples/server/src/workers.rs | 2 +- examples/static-files/Cargo.toml | 7 +- examples/static-files/src/configuration.rs | 9 +- .../static-files/src/configuration_two.rs | 4 +- examples/static-files/src/directory.rs | 4 +- examples/static-files/src/main.rs | 4 +- examples/testing/Cargo.toml | 6 +- examples/testing/src/stream_response.rs | 1 - examples/url-dispatch/Cargo.toml | 5 +- examples/url-dispatch/src/cfg.rs | 4 +- examples/url-dispatch/src/dhandler.rs | 5 +- examples/url-dispatch/src/guard.rs | 4 +- examples/url-dispatch/src/guard2.rs | 4 +- examples/url-dispatch/src/main.rs | 4 +- examples/url-dispatch/src/minfo.rs | 19 +- examples/url-dispatch/src/norm.rs | 8 +- examples/url-dispatch/src/norm2.rs | 11 +- examples/url-dispatch/src/path.rs | 21 +- examples/url-dispatch/src/path2.rs | 20 +- examples/url-dispatch/src/pbuf.rs | 11 +- examples/url-dispatch/src/scope.rs | 14 +- examples/url-dispatch/src/url_ext.rs | 12 +- examples/url-dispatch/src/urls.rs | 9 +- examples/websockets/Cargo.toml | 7 +- examples/websockets/src/main.rs | 6 +- i18n/en.toml | 3 + layouts/docs/baseof.html | 2 +- layouts/index.html | 15 +- layouts/shortcodes/actix-web-version.html | 1 - static/css/actix.css | 242 +++++++++--------- static/favicon.ico | Bin 32527 -> 25214 bytes static/img/jumbotron.jpg | Bin 245362 -> 98037 bytes 145 files changed, 1011 insertions(+), 1461 deletions(-) create mode 100644 .prettierrc.json delete mode 100644 content/code/license.md delete mode 100644 content/docs/autoreload.md delete mode 100644 content/docs/installation.md delete mode 100644 examples/autoreload/Cargo.toml delete mode 100644 examples/autoreload/src/main.rs create mode 100644 examples/databases/Cargo.toml create mode 100644 examples/databases/src/main.rs delete mode 100644 examples/og_databases/Cargo.toml delete mode 100644 examples/og_databases/src/main.rs delete mode 100644 examples/requests/src/json_two.rs delete mode 100644 layouts/shortcodes/actix-web-version.html diff --git a/.gitignore b/.gitignore index 7db4fd9..f52679b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ _site Cargo.lock build/ target/ +.DS_Store diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..804f284 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,13 @@ +{ + "singleQuote": true, + "tabWidth": 2, + "overrides": [ + { + "files": ["*.md"], + "options": { + "proseWrap": "always", + "printWidth": 100 + } + } + ] +} diff --git a/README.md b/README.md index 8391a0d..20f2738 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,12 @@ The work in progress website for the actix project based on tokio's website. ## Getting Started -Building the website depends on [Hugo](http://gohugo.io). So, first make sure -that you have it installed. If on OS X and using Homebrew, run the following: +Building the website depends on [Hugo]. So, first make sure +that you have it installed. If on macOS and using [Homebrew], run the following: ```sh -brew update && brew install hugo +brew update +brew install hugo ``` Then, get the website running locally: @@ -16,16 +17,18 @@ Then, get the website running locally: ```sh git clone https://github.com/actix/actix-website.git cd actix-website + hugo server ``` -Then visit [http://localhost:1313](http://localhost:1313). +Then visit http://localhost:1313. ## Updating diagrams -Diagrams are located under [/static/css/img/diagrams/](https://github.com/actix/actix-website/tree/master/static/img/diagrams) and built with [Mermaid CLI](https://github.com/mermaidjs/mermaid.cli). +Diagrams are located under [/static/css/img/diagrams/](https://github.com/actix/actix-website/tree/master/static/img/diagrams) and built with [Mermaid CLI]. For instance to edit `connection_overview` diagram: + ```sh cd static/css/img/diagrams vi connection_overview.mmd @@ -35,5 +38,11 @@ mmdc -i connection_overview.mmd -o connection_overview.svg # License -Pretty murky. Right now a massive clone of the tokio website. Will get this +Pretty murky. Right now a massive clone of the tokio website. Will get this figured out as we go along. + + + +[Hugo]: https://gohugo.io +[Homebrew]: https://brew.sh +[Mermaid CLI]: https://github.com/mermaidjs/mermaid.cli diff --git a/config.toml b/config.toml index 7ee657c..4bc6f2a 100644 --- a/config.toml +++ b/config.toml @@ -10,13 +10,13 @@ DefaultContentLanguage = "en" baseURL = "https://actix.rs" [languages.en] - languageCode = "en-US" - languageName = "English" - weight = 1 +languageCode = "en-US" +languageName = "English" +weight = 1 [params] -actixVersion = "0.9" -actixWebVersion = "2.0" -actixRtVersion = "1.0" -actixWebMinRustVersion = "1.39" -actixMinRustVersion = "1.39" +actixVersion = "0.10" +actixWebVersion = "3" +actixRtVersion = "1.1" +actixWebMinRustVersion = "1.42" +actixMinRustVersion = "1.42" diff --git a/content/_index.md b/content/_index.md index 2c72a1e..210c655 100644 --- a/content/_index.md +++ b/content/_index.md @@ -1,3 +1,3 @@ --- -title: Rust's powerful actor system and most fun web framework +title: Actix Web | A powerful, pragmatic, and extremely fast web framework for Rust. --- diff --git a/content/code/_index.md b/content/code/_index.md index 8ddf1d7..33515e1 100644 --- a/content/code/_index.md +++ b/content/code/_index.md @@ -5,15 +5,19 @@ description: Browse and download the sources # Browse the Code -All of actix is open source and can be found on our github organization: [actix -on github](https://github.com/actix) +The Actix ecosystem is fully open source on our GitHub organization [@actix](https://github.com/actix). Here are the most important projects and the link to their github repositories and related resources: -* [actix](https://github.com/actix/actix) ([issues](https://github.com/actix/actix/issues), [ci](https://travis-ci.org/actix/actix), [crate](https://crates.io/crates/actix), [api docs](https://docs.rs/actix)) -* [actix-web](https://github.com/actix/actix-web) ([issues](https://github.com/actix/actix-web/issues), [ci](https://travis-ci.org/actix/actix-web), [crate](https://crates.io/crates/actix-web), [api docs](https://docs.rs/actix-web)) -* [example code](https://github.com/actix/examples) -* [this website](https://github.com/actix/actix-website) +- [actix-web](https://github.com/actix/actix-web), ([API docs](https://docs.rs/actix-web)) +- [actix-extras crates](https://github.com/actix/actix-extras) +- [actix-net crates](https://github.com/actix/actix-net) +- [actix](https://github.com/actix/actix), ([API docs](https://docs.rs/actix)) +- [examples repo](https://github.com/actix/examples) +- [this website](https://github.com/actix/actix-website) -Actix is dual licensed under the MIT and Apache 2 licenses. [Read license text](license/). +Actix is dual licensed under the [MIT] and [Apache 2] licenses. + +[mit]: https://github.com/actix/actix-web/blob/master/LICENSE-MIT +[apache 2]: https://github.com/actix/actix-web/blob/master/LICENSE-APACHE diff --git a/content/code/license.md b/content/code/license.md deleted file mode 100644 index a99e01a..0000000 --- a/content/code/license.md +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: License ---- - -Actix is dual licensed under MIT and Apache licenses. - -# MIT License - -Copyright (c) 2017 Nikolay Kim - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -# Apache License - -_Version 2.0, January 2004_ -http://www.apache.org/licenses/ - -### Terms and Conditions for use, reproduction, and distribution - -#### 1. Definitions - -“License” shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -“Licensor” shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -“Legal Entity” shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, “control” means **(i)** the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the -outstanding shares, or **(iii)** beneficial ownership of such entity. - -“You” (or “Your”) shall mean an individual or Legal Entity exercising -permissions granted by this License. - -“Source” form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -“Object” form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -“Work” shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -“Derivative Works” shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -“Contribution” shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -“submitted” means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as “Not a Contribution.” - -“Contributor” shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -#### 2. Grant of Copyright License - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -#### 3. Grant of Patent License - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable (except as stated in this section) patent license to make, have -made, use, offer to sell, sell, import, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -#### 4. Redistribution - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -* **(a)** You must give any other recipients of the Work or Derivative Works a copy of -this License; and -* **(b)** You must cause any modified files to carry prominent notices stating that You -changed the files; and -* **(c)** You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. - -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -#### 5. Submission of Contributions - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -#### 6. Trademarks - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -#### 7. Disclaimer of Warranty - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -#### 8. Limitation of Liability - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -#### 9. Accepting Warranty or Additional Liability - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. diff --git a/content/community/_index.md b/content/community/_index.md index 1cf3509..2e18e00 100644 --- a/content/community/_index.md +++ b/content/community/_index.md @@ -5,16 +5,13 @@ description: The best things in life are to be shared # Join us -Want to talk to others about questions? The [actix gitter -channel](https://gitter.im/actix/actix) or -[reddit community](https://www.reddit.com/r/actix/) -are your best starting point. +Want to talk to others about questions? The Actix [Gitter channel](https://gitter.im/actix/actix) or +[reddit community](https://www.reddit.com/r/actix/) are your best starting point. -If you think you found a bug it's best to go to the -[github](https://github.com/actix) directly. There are two repositories -that you might want to report against. [actix](https://github.com/actix/actix) -for issues with the actor framework or [actix-web](https://github.com/actix/actix-web) -for the high level web framework. +If you think you found a bug it's best to go to the [github](https://github.com/actix) directly. +There are two repositories that you might want to report against. +[actix](https://github.com/actix/actix) for issues with the actor framework or +[actix-web](https://github.com/actix/actix-web) for the web framework. -We're a welcoming community so don't be afraid to engage. Interactions -are [governed by our code of conduct](coc/). +We're a welcoming community so don't be afraid to engage. Interactions are +[governed by our code of conduct](coc/). diff --git a/content/docs/_index.md b/content/docs/_index.md index 603454b..e827e63 100644 --- a/content/docs/_index.md +++ b/content/docs/_index.md @@ -1,6 +1,6 @@ --- title: Documentation -description: Guiding you through building apps with actix +description: Guiding you through building web apps with Actix menu: docs_intro: name: Welcome @@ -9,19 +9,16 @@ weight: 10 # Welcome to Actix -Actix is your door to developing web services with Rust and this documentation -is going to guide you. +Actix Web lets you quickly and confidently develop web services in Rust and this guide get you going +in no time. -This documentation currently covers mostly the `actix-web` part which is the high level -web framework previously built on top of the `actix` actor framework and the [Tokio][tokio] -async IO system. This is the part that is from an API stability point of view the most stable. +The documentation on this website focusses primarily on the Actix Web framework. For information +about the actor framework called Actix, check out the [Actix book][actix-book] (or the lower level +[actix API docs][actix-docs]). Otherwise, head on to the [getting started guide][getting-started]. +If you already know your ways around and you need specific information you might want to read the +[actix-web API docs][actix-web-docs]. -If you haven't used `actix-web` yet it's best to start with the [getting started -guide][gettingstarted]. If you already know your ways around and you need -specific information you might want to read the [actix-web API docs][actixwebdocs] -(or the lower level [actix API docs][actixdocs]). - -[gettingstarted]: ./getting-started -[actixwebdocs]: https://docs.rs/actix-web -[actixdocs]: https://docs.rs/actix -[tokio]: https://tokio.rs +[getting-started]: ./getting-started +[actix-web-docs]: https://docs.rs/actix-web +[actix-docs]: https://docs.rs/actix +[actix-book]: https://actix.rs/book/actix diff --git a/content/docs/application.md b/content/docs/application.md index 57336b4..97dec1d 100644 --- a/content/docs/application.md +++ b/content/docs/application.md @@ -6,35 +6,33 @@ weight: 140 # Writing an Application -`actix-web` provides various primitives to build web servers and applications with Rust. -It provides routing, middlewares, pre-processing of requests, post-processing of -responses, etc. +`actix-web` provides various primitives to build web servers and applications with Rust. It provides +routing, middleware, pre-processing of requests, post-processing of responses, etc. -All `actix-web` servers are built around the [`App`][app] instance. It is used for -registering routes for resources and middlewares. It also stores application -state shared across all handlers within the same scope. +All `actix-web` servers are built around the [`App`][app] instance. It is used for registering +routes for resources and middleware. It also stores application state shared across all handlers +within the same scope. -An application's [`scope`][scope] acts as a namespace for all routes, i.e. all routes for a -specific application scope have the same url path prefix. The application prefix always -contains a leading "/" slash. If a supplied prefix does not contain leading slash, -it is automatically inserted. The prefix should consist of value path segments. +An application's [`scope`][scope] acts as a namespace for all routes, i.e. all routes for a specific +application scope have the same url path prefix. The application prefix always contains a leading +"/" slash. If a supplied prefix does not contain leading slash, it is automatically inserted. The +prefix should consist of value path segments. -> For an application with scope `/app`, -> any request with the paths `/app`, `/app/`, or `/app/test` would match; -> however, the path `/application` would not match. +> For an application with scope `/app`, any request with the paths `/app`, `/app/`, or `/app/test` +> would match; however, the path `/application` would not match. {{< include-example example="application" file="app.rs" section="setup" >}} -In this example, an application with the `/app` prefix and a `index.html` resource -are created. This resource is available through the `/app/index.html` url. +In this example, an application with the `/app` prefix and a `index.html` resource are created. This +resource is available through the `/app/index.html` url. > For more information, check the [URL Dispatch][usingappprefix] section. ## State -Application state is shared with all routes and resources within the same scope. State -can be accessed with the [`web::Data`][data] extractor where `T` is the type of the state. State is -also available for middlewares. +Application state is shared with all routes and resources within the same scope. State can be +accessed with the [`web::Data`][data] extractor where `T` is the type of the state. State is also +accessible for middleware. Let's write a simple application and store the application name in the state: @@ -48,14 +46,16 @@ Any number of state types could be registered within the application. ## Shared Mutable State -`HttpServer` accepts an application factory rather than an application instance. -An `HttpServer` constructs an application instance for each thread. Therefore, application data must be -constructed multiple times. If you want to share data between different threads, a shareable -object should be used, e.g. `Send` + `Sync`. +`HttpServer` accepts an application factory rather than an application instance. An `HttpServer` +constructs an application instance for each thread. Therefore, application data must be constructed +multiple times. If you want to share data between different threads, a shareable object should be +used, e.g. `Send` + `Sync`. -Internally, [`web::Data`][data] uses `Arc`. Thus, in order to avoid creating two `Arc`s, we should create our Data before registering it using [`App::app_data()`][appdata]. +Internally, [`web::Data`][data] uses `Arc`. Thus, in order to avoid creating two `Arc`s, we should +create our Data before registering it using [`App::app_data()`][appdata]. -In the following example, we will write an application with mutable, shared state. First, we define our state and create our handler: +In the following example, we will write an application with mutable, shared state. First, we define +our state and create our handler: {{< include-example example="application" file="mutable_state.rs" section="setup_mutable" >}} @@ -67,37 +67,37 @@ and register the data in an `App`: The [`web::scope()`][webscope] method allows setting a resource group prefix. This scope represents a resource prefix that will be prepended to all resource patterns added by the resource -configuration. This can be used to help mount a set of routes at a different location -than the original author intended while still maintaining the same resource names. +configuration. This can be used to help mount a set of routes at a different location than the +original author intended while still maintaining the same resource names. For example: {{< include-example example="application" file="scope.rs" section="scope" >}} -In the above example, the `show_users` route will have an effective route pattern of -`/users/show` instead of `/show` because the application's scope argument will be prepended -to the pattern. The route will then only match if the URL path is `/users/show`, -and when the [`HttpRequest.url_for()`][urlfor] function is called with the route name `show_users`, -it will generate a URL with that same path. +In the above example, the `show_users` route will have an effective route pattern of `/users/show` +instead of `/show` because the application's scope argument will be prepended to the pattern. The +route will then only match if the URL path is `/users/show`, and when the +[`HttpRequest.url_for()`][urlfor] function is called with the route name `show_users`, it will +generate a URL with that same path. ## Application guards and virtual hosting -You can think of a guard as a simple function that accepts a *request* object reference -and returns *true* or *false*. Formally, a guard is any object that implements the -[`Guard`][guardtrait] trait. Actix-web provides several guards. You can check the -[functions section][guardfuncs] of the API docs. +You can think of a guard as a simple function that accepts a _request_ object reference and returns +_true_ or _false_. Formally, a guard is any object that implements the [`Guard`][guardtrait] trait. +Actix-web provides several guards. You can check the [functions section][guardfuncs] of the API +docs. -One of the provided guards is [`Header`][guardheader]. It can be used as a -filter based on request header information. +One of the provided guards is [`Header`][guardheader]. It can be used as a filter based on request +header information. {{< include-example example="application" file="vh.rs" section="vh" >}} # Configure -For simplicity and reusability both [`App`][appconfig] and [`web::Scope`][webscopeconfig] provide the `configure` method. -This function is useful for moving parts of the configuration to a different module or even -library. For example, some of the resource's configuration could be moved to a different -module. +For simplicity and reusability both [`App`][appconfig] and [`web::Scope`][webscopeconfig] provide +the `configure` method. This function is useful for moving parts of the configuration to a different +module or even library. For example, some of the resource's configuration could be moved to a +different module. {{< include-example example="application" file="config.rs" section="config" >}} @@ -108,19 +108,22 @@ The result of the above example would be: /app -> "app" /api/test -> "test" ``` + Each [`ServiceConfig`][serviceconfig] can have its own `data`, `routes`, and `services`. + + [usingappprefix]: /docs/url-dispatch/index.html#using-an-application-prefix-to-compose-applications [stateexample]: https://github.com/actix/examples/blob/master/state/src/main.rs -[guardtrait]: https://docs.rs/actix-web/2/actix_web/guard/trait.Guard.html -[guardfuncs]: https://docs.rs/actix-web/2/actix_web/guard/index.html#functions -[guardheader]: https://docs.rs/actix-web/2/actix_web/guard/fn.Header.html -[data]: https://docs.rs/actix-web/2/actix_web/web/struct.Data.html -[app]: https://docs.rs/actix-web/2/actix_web/struct.App.html -[appconfig]: https://docs.rs/actix-web/2/actix_web/struct.App.html#method.configure -[appdata]: https://docs.rs/actix-web/2/actix_web/struct.App.html#method.app_data -[scope]: https://docs.rs/actix-web/2/actix_web/struct.Scope.html -[webscopeconfig]: https://docs.rs/actix-web/2/actix_web/struct.Scope.html#method.configure -[webscope]: https://docs.rs/actix-web/2/actix_web/web/fn.scope.html -[urlfor]: https://docs.rs/actix-web/2/actix_web/struct.HttpRequest.html#method.url_for -[serviceconfig]: https://docs.rs/actix-web/2/actix_web/web/struct.ServiceConfig.html +[guardtrait]: https://docs.rs/actix-web/3/actix_web/guard/trait.Guard.html +[guardfuncs]: https://docs.rs/actix-web/3/actix_web/guard/index.html#functions +[guardheader]: https://docs.rs/actix-web/3/actix_web/guard/fn.Header.html +[data]: https://docs.rs/actix-web/3/actix_web/web/struct.Data.html +[app]: https://docs.rs/actix-web/3/actix_web/struct.App.html +[appconfig]: https://docs.rs/actix-web/3/actix_web/struct.App.html#method.configure +[appdata]: https://docs.rs/actix-web/3/actix_web/struct.App.html#method.app_data +[scope]: https://docs.rs/actix-web/3/actix_web/struct.Scope.html +[webscopeconfig]: https://docs.rs/actix-web/3/actix_web/struct.Scope.html#method.configure +[webscope]: https://docs.rs/actix-web/3/actix_web/web/fn.scope.html +[urlfor]: https://docs.rs/actix-web/3/actix_web/struct.HttpRequest.html#method.url_for +[serviceconfig]: https://docs.rs/actix-web/3/actix_web/web/struct.ServiceConfig.html diff --git a/content/docs/autoreload.md b/content/docs/autoreload.md deleted file mode 100644 index 77549fc..0000000 --- a/content/docs/autoreload.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Autoreloading -menu: docs_patterns -weight: 1000 ---- - -# Auto-Reloading Development Server - -During development it can be very handy to have cargo automatically recompile the code -on change. This can be accomplished by using [cargo-watch][cargowatch]. Because an -actix app will typically bind to a port for listening for incoming HTTP requests it makes -sense to combine this with the [listenfd][listenfd] crate and the [systemfd][systemfd] -utility to ensure the socket is kept open while the app is compiling and reloading. - -`systemfd` will open a socket and pass it to `cargo-watch` which will watch for -changes and then invoke the compiler and run your actix app. The actix app -will then use `listenfd` to pick up the socket that `systemfd` opened. - -## Binaries Necessary - -For an automatic reloading experience you need to install `cargo-watch` and -`systemfd`. Both are written in Rust and can be installed with `cargo install`: - -``` -cargo install systemfd cargo-watch -``` - -## Code Changes - -Additionally you need to slightly modify your actix app so that it can pick up -an external socket opened by `systemfd`. Add the listenfd dependency to your app: - -```ini -[dependencies] -listenfd = "0.3" -``` - -Then modify your server code to only invoke `bind` as a fallback: - -{{< include-example example="autoreload" file="main.rs" section="autoreload" >}} - -## Running the Server - -To now run the development server invoke this command: - -``` -systemfd --no-pid -s http::3000 -- cargo watch -x run -``` - -[cargowatch]: https://github.com/passcod/cargo-watch -[listenfd]: https://crates.io/crates/listenfd -[systemfd]: https://github.com/mitsuhiko/systemfd diff --git a/content/docs/databases.md b/content/docs/databases.md index e840768..aca1f2f 100644 --- a/content/docs/databases.md +++ b/content/docs/databases.md @@ -4,51 +4,43 @@ menu: docs_patterns weight: 1010 --- +# Async Options + +We have several example projects showing use of async database adapters: + +- SQLx: https://github.com/actix/examples/tree/master/sqlx_todo +- Postgres: https://github.com/actix/examples/tree/master/async_pg +- SQLite: https://github.com/actix/examples/tree/master/async_db + # Diesel -{{% alert %}} -NOTE: The `actix-web` 1.0 version of this section is still -[being updated](https://github.com/cldershem/actix-website/tree/update1.0-db). Checkout -this [example](https://github.com/actix/examples/tree/master/async_db) until then. -{{% /alert %}} +The current version of Diesel (v1) does not support asynchronous operations, so it is important to +use the [`web::block`][web-block] function to offload your database operations to the Actix runtime +thread-pool. -At the moment, Diesel 1.0 does not support asynchronous operations, -but it's possible to use the `actix` synchronous actor system as a database interface api. +You can create action functions that correspond to all the operations your app will perform on the +database. -Technically, sync actors are worker style actors. Multiple sync actors -can be run in parallel and process messages from same queue. Sync actors work in mpsc mode. +{{< include-example example="databases" file="main.rs" section="handler" >}} -Let's create a simple database api that can insert a new user row into a SQLite table. -We must define a sync actor and a connection that this actor will use. The same approach -can be used for other databases. +Now you should set up the database pool using a crate such as `r2d2`, which makes many DB +connections available to your app. This means that multiple handlers can manipulate the DB at the +same time, and still accept new connections. Simply, the pool in your app state. (In this case, it's +beneficial not to use a state wrapper struct because the pool handles shared access for you.) -{{< include-example example="og_databases" file="main.rs" section="actor" >}} +{{< include-example example="databases" file="main.rs" section="main" >}} -This is the definition of our actor. Now, we must define the *create user* message and response. +Now, in a request handler, use the `Data` extractor to get the pool from app state and get a +connection from it. This provides an owned database connection that can be passed into a +[`web::block`][web-block] closure. Then just call the action function with the necessary arguments +and `.await` the result. -{{< include-example example="og_databases" file="main.rs" section="message" >}} +This example also maps the error to an `HttpResponse` before using the `?` operator but this is not +necessary if your return error type implements [`ResponseError`][response-error]. -We can send a `CreateUser` message to the `DbExecutor` actor, and as a result, we will receive a -`User` model instance. Next, we must define the handler implementation for this message. +{{< include-example example="databases" file="main.rs" section="index" >}} -{{< include-example example="og_databases" file="main.rs" section="handler" >}} +That's it! See the full example here: https://github.com/actix/examples/tree/master/diesel -That's it! Now, we can use the *DbExecutor* actor from any http handler or middleware. -All we need is to start *DbExecutor* actors and store the address in a state where http handler -can access it. - -{{< include-example example="og_databases" file="main.rs" section="main" >}} - -We will use the address in a request handler. The handle returns a future object; -thus, we receive the message response asynchronously. -`Route::a()` must be used for async handler registration. - -{{< include-example example="og_databases" file="main.rs" section="index" >}} - -> A full example is available in the [examples directory][examples]. - -> More information on sync actors can be found in the -> [actix documentation][actixdocs]. - -[examples]: https://github.com/actix/examples/tree/master/diesel/ -[actixdocs]: https://docs.rs/actix/0.7.0/actix/sync/index.html +[web-block]: https://docs.rs/actix-web/3/actix_web/web/fn.block.html +[response-error]: https://docs.rs/actix-web/3/actix_web/trait.ResponseError.html diff --git a/content/docs/errors.md b/content/docs/errors.md index 34e9435..cbdb5c9 100644 --- a/content/docs/errors.md +++ b/content/docs/errors.md @@ -7,12 +7,12 @@ weight: 180 # Errors Actix-web uses its own [`actix_web::error::Error`][actixerror] type and -[`actix_web::error::ResponseError`][responseerror] trait for error handling -from web handlers. +[`actix_web::error::ResponseError`][responseerror] trait for error handling from web handlers. If a handler returns an `Error` (referring to the [general Rust trait -`std::error::Error`][stderror]) in a `Result` that also implements the -`ResponseError` trait, actix-web will render that error as an HTTP response with it's corresponding [`actix_web::http::StatusCode`][status_code]. Internal server error is generated by default: +`std::error::Error`][stderror]) in a `Result` that also implements the `ResponseError` trait, +actix-web will render that error as an HTTP response with it's corresponding +[`actix_web::http::StatusCode`][status_code]. Internal server error is generated by default: ```rust pub trait ResponseError { @@ -27,12 +27,11 @@ A `Responder` coerces compatible `Result`s into HTTP responses: impl> Responder for Result ``` -`Error` in the code above is actix-web's error definition, and any errors that -implement `ResponseError` can be converted to one automatically. +`Error` in the code above is actix-web's error definition, and any errors that implement +`ResponseError` can be converted to one automatically. -Actix-web provides `ResponseError` implementations for some common non-actix -errors. For example, if a handler responds with an `io::Error`, that error is -converted into an `HttpInternalServerError`: +Actix-web provides `ResponseError` implementations for some common non-actix errors. For example, if +a handler responds with an `io::Error`, that error is converted into an `HttpInternalServerError`: ```rust use std::io; @@ -43,18 +42,18 @@ fn index(_req: HttpRequest) -> io::Result { } ``` -See [the actix-web API documentation][responseerrorimpls] for a full list of foreign -implementations for `ResponseError`. +See [the actix-web API documentation][responseerrorimpls] for a full list of foreign implementations +for `ResponseError`. ## An example of a custom error response -Here's an example implementation for `ResponseError`: +Here's an example implementation for `ResponseError`, using the [derive_more] crate +for declarative error enums. {{< include-example example="errors" file="main.rs" section="response-error" >}} -`ResponseError` has a default implementation for `error_response()` that will -render a _500_ (internal server error), and that's what will happen when the -`index` handler executes above. +`ResponseError` has a default implementation for `error_response()` that will render a _500_ +(internal server error), and that's what will happen when the `index` handler executes above. Override `error_response()` to produce more useful results: @@ -62,69 +61,56 @@ Override `error_response()` to produce more useful results: # Error helpers -Actix-web provides a set of error helper functions that are useful for generating -specific HTTP error codes from other errors. Here we convert `MyError`, which -doesn't implement the `ResponseError` trait, to a _400_ (bad request) using -`map_err`: +Actix-web provides a set of error helper functions that are useful for generating specific HTTP +error codes from other errors. Here we convert `MyError`, which doesn't implement the +`ResponseError` trait, to a _400_ (bad request) using `map_err`: {{< include-example example="errors" file="helpers.rs" section="helpers" >}} -See the [API documentation for actix-web's `error` module][actixerror] -for a full list of available error helpers. - -# Compatibility with failure - -Actix-web provides automatic compatibility with the [failure] library so that -errors deriving `fail` will be converted automatically to an actix error. Keep -in mind that those errors will render with the default _500_ status code unless you -also provide your own `error_response()` implementation for them. +See the [API documentation for actix-web's `error` module][actixerror] for a full list of available +error helpers. # Error logging -Actix logs all errors at the `WARN` log level. If an application's log level is -set to `DEBUG` and `RUST_BACKTRACE` is enabled, the backtrace is also logged. -These are configurable with environmental variables: +Actix logs all errors at the `WARN` log level. If an application's log level is set to `DEBUG` and +`RUST_BACKTRACE` is enabled, the backtrace is also logged. These are configurable with environmental +variables: ``` >> RUST_BACKTRACE=1 RUST_LOG=actix_web=debug cargo run ``` -The `Error` type uses the cause's error backtrace if available. If the -underlying failure does not provide a backtrace, a new backtrace is constructed -pointing to the point where the conversion occurred (rather than the origin of -the error). +The `Error` type uses the cause's error backtrace if available. If the underlying failure does not +provide a backtrace, a new backtrace is constructed pointing to the point where the conversion +occurred (rather than the origin of the error). # Recommended practices in error handling -It might be useful to think about dividing the errors an application produces -into two broad groups: those which are intended to be be user-facing, and those -which are not. +It might be useful to think about dividing the errors an application produces into two broad groups: +those which are intended to be be user-facing, and those which are not. -An example of the former is that I might use failure to specify a `UserError` -enum which encapsulates a `ValidationError` to return whenever a user sends bad -input: +An example of the former is that I might use failure to specify a `UserError` enum which +encapsulates a `ValidationError` to return whenever a user sends bad input: {{< include-example example="errors" file="recommend_one.rs" section="recommend-one" >}} -This will behave exactly as intended because the error message defined with -`display` is written with the explicit intent to be read by a user. +This will behave exactly as intended because the error message defined with `display` is written +with the explicit intent to be read by a user. -However, sending back an error's message isn't desirable for all errors -- -there are many failures that occur in a server environment where we'd probably -want the specifics to be hidden from the user. For example, if a database goes -down and client libraries start producing connect timeout errors, or if an HTML -template was improperly formatted and errors when rendered. In these cases, it -might be preferable to map the errors to a generic error suitable for user -consumption. +However, sending back an error's message isn't desirable for all errors -- there are many failures +that occur in a server environment where we'd probably want the specifics to be hidden from the +user. For example, if a database goes down and client libraries start producing connect timeout +errors, or if an HTML template was improperly formatted and errors when rendered. In these cases, it +might be preferable to map the errors to a generic error suitable for user consumption. -Here's an example that maps an internal error to a user-facing `InternalError` -with a custom message: +Here's an example that maps an internal error to a user-facing `InternalError` with a custom +message: {{< include-example example="errors" file="recommend_two.rs" section="recommend-two" >}} -By dividing errors into those which are user facing and those which are not, we -can ensure that we don't accidentally expose users to errors thrown by -application internals which they weren't meant to see. +By dividing errors into those which are user facing and those which are not, we can ensure that we +don't accidentally expose users to errors thrown by application internals which they weren't meant +to see. # Error Logging @@ -132,10 +118,11 @@ This is a basic example using `middleware::Logger`: {{< include-example example="errors" file="logging.rs" section="logging" >}} -[actixerror]: https://docs.rs/actix-web/2/actix_web/error/struct.Error.html -[errorhelpers]: https://docs.rs/actix-web/2/actix_web/trait.ResponseError.html -[failure]: https://github.com/rust-lang-nursery/failure -[responseerror]: https://docs.rs/actix-web/2/actix_web/error/trait.ResponseError.html -[responseerrorimpls]: https://docs.rs/actix-web/2/actix_web/error/trait.ResponseError.html#foreign-impls +[actixerror]: https://docs.rs/actix-web/3/actix_web/error/struct.Error.html +[errorhelpers]: https://docs.rs/actix-web/3/actix_web/trait.ResponseError.html +[derive_more]: https://crates.io/crates/derive_more +[responseerror]: https://docs.rs/actix-web/3/actix_web/error/trait.ResponseError.html +[responseerrorimpls]: + https://docs.rs/actix-web/3/actix_web/error/trait.ResponseError.html#foreign-impls [stderror]: https://doc.rust-lang.org/std/error/trait.Error.html -[status_code]: https://docs.rs/actix-web/2.0.0/actix_web/http/struct.StatusCode.html +[status_code]: https://docs.rs/actix-web/3.0.0/actix_web/http/struct.StatusCode.html diff --git a/content/docs/extractors.md b/content/docs/extractors.md index 16f7022..6857122 100644 --- a/content/docs/extractors.md +++ b/content/docs/extractors.md @@ -19,8 +19,8 @@ up to 10 extractors per handler function. Argument position does not matter. [*Path*][pathstruct] provides information that can be extracted from the Request's path. You can deserialize any variable segment from the path. -For instance, for resource that registered for the `/users/{userid}/{friend}` path, -two segments could be deserialized, `userid` and `friend`. These segments could be +For instance, for resource that registered for the `/users/{user_id}/{friend}` path, +two segments could be deserialized, `user_id` and `friend`. These segments could be extracted into a `tuple`, i.e. `Path<(u32, String)>` or any structure that implements the `Deserialize` trait from the *serde* crate. @@ -109,13 +109,13 @@ number of requests processed per thread. A proper implementation would use `Arc` > request handling processes would block. If you need to share or update some state > from multiple threads, consider using the tokio synchronization primitives. -[pathstruct]: https://docs.rs/actix-web/2/actix_web/dev/struct.Path.html -[querystruct]: https://docs.rs/actix-web/2/actix_web/web/struct.Query.html -[jsonstruct]: https://docs.rs/actix-web/2/actix_web/web/struct.Json.html -[jsonconfig]: https://docs.rs/actix-web/2/actix_web/web/struct.JsonConfig.html -[formconfig]: https://docs.rs/actix-web/2/actix_web/web/struct.FormConfig.html -[datastruct]: https://docs.rs/actix-web/2/actix_web/web/struct.Data.html -[stringexample]: https://docs.rs/actix-web/2/actix_web/trait.FromRequest.html#example-2 -[bytesexample]: https://docs.rs/actix-web/2/actix_web/trait.FromRequest.html#example-4 -[payloadexample]: https://docs.rs/actix-web/2/actix_web/web/struct.Payload.html +[pathstruct]: https://docs.rs/actix-web/3/actix_web/dev/struct.Path.html +[querystruct]: https://docs.rs/actix-web/3/actix_web/web/struct.Query.html +[jsonstruct]: https://docs.rs/actix-web/3/actix_web/web/struct.Json.html +[jsonconfig]: https://docs.rs/actix-web/3/actix_web/web/struct.JsonConfig.html +[formconfig]: https://docs.rs/actix-web/3/actix_web/web/struct.FormConfig.html +[datastruct]: https://docs.rs/actix-web/3/actix_web/web/struct.Data.html +[stringexample]: https://docs.rs/actix-web/3/actix_web/trait.FromRequest.html#example-2 +[bytesexample]: https://docs.rs/actix-web/3/actix_web/trait.FromRequest.html#example-4 +[payloadexample]: https://docs.rs/actix-web/3/actix_web/web/struct.Payload.html [actix]: https://actix.github.io/actix/actix/ diff --git a/content/docs/getting-started.md b/content/docs/getting-started.md index a408686..be72733 100644 --- a/content/docs/getting-started.md +++ b/content/docs/getting-started.md @@ -4,9 +4,14 @@ menu: docs_basics weight: 130 --- -# Getting Started +## Installing Rust -Let’s write our first `actix-web` application! +If you don't have Rust yet, we recommend you use `rustup` to manage your Rust installation. The +[official rust guide][rustguide] has a wonderful section on getting started. + +Actix Web currently has a minimum supported Rust version (MSRV) of {{< rust-version "actix-web" >}}. +Running `rustup update` will ensure you have the latest and greatest Rust version available. As +such, this guide assumes you are running Rust {{< rust-version "actix-web" >}} or later. ## Hello, world! @@ -17,71 +22,35 @@ cargo new hello-world cd hello-world ``` -Now, add `actix-web` as a dependency of your project by ensuring your `Cargo.toml` -contains the following: +Add `actix-web` as a dependency of your project by adding the following to your `Cargo.toml` file. -```ini +```toml [dependencies] actix-web = "{{< actix-version "actix-web" >}}" ``` -If you want to use the `#[actix_rt::main]` macro, you have to add `actix-rt` to your dependency. -Now your `Cargo.toml` should look like following: +Request handlers use an 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): -```ini -[dependencies] -actix-web = "{{< actix-version "actix-web" >}}" -actix-rt = "{{< actix-version "actix-rt" >}}" -``` +{{< include-example example="getting-started" section="handlers" >}} -In order to implement a web server, we first need to create a request handler. +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 the other route that does not use a routing macro. -A request handler is an async 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. +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 a path +and method. Finally, the app is started inside an `HttpServer` which will serve incoming requests +using your `App` as 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. +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://localhost:8080/` or any of +the other routes you defined to see the results. -**Note**: You may have noticed the `#[actix_rt::main]` attribute macro. This -macro executes the associated async function within the actix runtime. -Any async function could be marked and executed by this macro. - -### Using Attribute Macros to Define Routes - -Alternatively, you can define routes using macro attributes which -allow you to specify the routes above your functions like so: - -{{< include-example example="getting-started" section="macro-attributes">}} - -You can then register the route using `service()`: - -```rust -App::new() - .service(index3) -``` - -For consistency reasons, this documentation only uses the explicit 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. - -To learn more, see [actix-web-codegen]. - -### 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]. + +[rustguide]: https://doc.rust-lang.org/book/ch01-01-installation.html [actix-web-codegen]: https://docs.rs/actix-web-codegen/ -[autoload]: ../autoreload/ diff --git a/content/docs/handlers.md b/content/docs/handlers.md index 04839cd..879d6f9 100644 --- a/content/docs/handlers.md +++ b/content/docs/handlers.md @@ -68,12 +68,12 @@ the stream trait `Stream`, i.e: Sometimes, you need to return different types of responses. For example, you can error check and return errors, return async responses, or any result that requires two different types. -For this case, the [*Either*][either] type can be used. `Either` allows combining two +For this case, the [Either][either] type can be used. `Either` allows combining two different responder types into a single type. {{< include-example example="either" file="main.rs" section="either" >}} -[implfromrequest]: https://docs.rs/actix-web/2/actix_web/trait.FromRequest.html -[respondertrait]: https://docs.rs/actix-web/2/actix_web/trait.Responder.html -[responderimpls]: https://docs.rs/actix-web/2/actix_web/trait.Responder.html#foreign-impls -[either]: https://docs.rs/actix-web/2/actix_web/enum.Either.html +[implfromrequest]: https://docs.rs/actix-web/3/actix_web/trait.FromRequest.html +[respondertrait]: https://docs.rs/actix-web/3/actix_web/trait.Responder.html +[responderimpls]: https://docs.rs/actix-web/3/actix_web/trait.Responder.html#foreign-impls +[either]: https://docs.rs/actix-web/3/actix_web/enum.Either.html diff --git a/content/docs/http2.md b/content/docs/http2.md index bd07d0d..e32c65e 100644 --- a/content/docs/http2.md +++ b/content/docs/http2.md @@ -1,15 +1,16 @@ --- -title: HTTP/2.0 -menu: docs_proto +title: HTTP/2 +menu: docs_protocols weight: 250 --- -`actix-web` automatically upgrades connections to *HTTP/2.0* if possible. +`actix-web` automatically upgrades connections to *HTTP/2* if possible. # Negotiation -*HTTP/2.0* protocol over tls without prior knowledge requires [tls alpn][tlsalpn]. +*HTTP/2* protocol over TLS without prior knowledge requires [TLS ALPN][tlsalpn]. + > Currently, only `rust-openssl` has support. `alpn` negotiation requires enabling the feature. When enabled, `HttpServer` provides the @@ -18,7 +19,6 @@ weight: 250 ```toml [dependencies] actix-web = { version = "{{< actix-version "actix-web" >}}", features = ["openssl"] } -actix-rt = "1.0.0" openssl = { version = "0.10", features = ["v110"] } ``` {{< include-example example="http2" file="main.rs" section="main" >}} @@ -31,6 +31,6 @@ connection and tls connection. [rfc section 3.4][rfcsection34]. [rfcsection32]: https://http2.github.io/http2-spec/#rfc.section.3.2 [rfcsection34]: https://http2.github.io/http2-spec/#rfc.section.3.4 -[bindopenssl]: https://docs.rs/actix-web/2/actix_web/struct.HttpServer.html#method.bind_openssl +[bindopenssl]: https://docs.rs/actix-web/3/actix_web/struct.HttpServer.html#method.bind_openssl [tlsalpn]: https://tools.ietf.org/html/rfc7301 [examples]: https://github.com/actix/examples/tree/master/rustls diff --git a/content/docs/http_server_init.md b/content/docs/http_server_init.md index 684ed97..71385cd 100644 --- a/content/docs/http_server_init.md +++ b/content/docs/http_server_init.md @@ -1,20 +1,21 @@ --- -title: Http Server Initialization +title: HTTP Server Initialization menu: docs_architecture weight: 1020 --- ## Architecture overview -Below is a diagram of HttpServer initalization, which happens on the following code +Below is a diagram of HttpServer initialization, which happens on the following code + ```rust -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/", web::to(|| HttpResponse::Ok())) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/content/docs/installation.md b/content/docs/installation.md deleted file mode 100644 index 1b489f0..0000000 --- a/content/docs/installation.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Installation -menu: docs_intro -weight: 110 ---- - -# Installing Rust - -Since `actix-web` is a Rust framework you will need Rust to get started with it. If you -don't have it yet we recommend you use `rustup` to manage your Rust installation. The -[official rust guide][rustguide] has a wonderful section on getting started. - -We currently require at least Rust {{< rust-version "actix-web" >}} so make sure you run -`rustup update` to have the latest and greatest Rust version available. In particular -this guide will assume that you actually run Rust {{< rust-version "actix-web" >}} or later. - -# Installing `actix-web` - -Thanks to Rust's `cargo` package manager you won't need to explicitly install -`actix-web`. Just depend on it and you're ready to go. For the unlikely -case that you want to use the development version of `actix-web` you can -depend on the git repository directly. - -Release version: - -```ini -[dependencies] -actix-web = "{{< actix-version "actix-web" >}}" -``` - -Development version: - -```ini -[dependencies] -actix-web = { git = "https://github.com/actix/actix-web" } -``` - -# Diving In - -There are two paths you can take here. You can follow the guide along or if you are very -impatient you might want to have a look at our [extensive example repository][examples] -and run the included examples. Here for instance is how you run the included `basics` -example: - -``` -git clone https://github.com/actix/examples -cd examples/basics -cargo run -``` - -[rustguide]: https://doc.rust-lang.org/book/ch01-01-installation.html -[examples]: https://github.com/actix/examples diff --git a/content/docs/middleware.md b/content/docs/middleware.md index cdd74b5..0b657cb 100644 --- a/content/docs/middleware.md +++ b/content/docs/middleware.md @@ -1,5 +1,5 @@ --- -title: Middlewares +title: Middleware menu: docs_advanced weight: 220 --- @@ -29,11 +29,11 @@ The following demonstrates creating a simple middleware: {{< include-example example="middleware" file="main.rs" section="simple" >}} -Alternatively, for simple use cases, you can use [*wrap_fn*][wrap_fn] to create small, ad-hoc middlewares: +Alternatively, for simple use cases, you can use [*wrap_fn*][wrap_fn] to create small, ad-hoc middleware: {{< include-example example="middleware" file="wrap_fn.rs" section="wrap-fn" >}} -> Actix-web provides several useful middlewares, such as *logging*, *user sessions*, +> Actix-web provides several useful middleware, such as *logging*, *user sessions*, > *compress*, etc. # Logging @@ -89,8 +89,7 @@ a specified header. ## User sessions Actix-web provides a general solution for session management. The -[**actix-session**][actixsession] middleware can be used with different backend types -to store session data in different backends. +[**actix-session**][actixsession] middleware can use multiple backend types to store session data. > By default, only cookie session backend is implemented. Other backend implementations > can be added. @@ -132,6 +131,6 @@ into a response. [cookiesession]: https://docs.rs/actix-session/0.3.0/actix_session/struct.CookieSession.html [actixsession]: https://docs.rs/actix-session/0.3.0/actix_session/ [envlogger]: https://docs.rs/env_logger/*/env_logger/ -[servicetrait]: https://docs.rs/actix-web/2/actix_web/dev/trait.Service.html -[transformtrait]: https://docs.rs/actix-web/2/actix_web/dev/trait.Transform.html -[wrap_fn]: https://docs.rs/actix-web/2/actix_web/struct.App.html#method.wrap_fn +[servicetrait]: https://docs.rs/actix-web/3/actix_web/dev/trait.Service.html +[transformtrait]: https://docs.rs/actix-web/3/actix_web/dev/trait.Transform.html +[wrap_fn]: https://docs.rs/actix-web/3/actix_web/struct.App.html#method.wrap_fn diff --git a/content/docs/request.md b/content/docs/request.md index 1843bf7..f224df1 100644 --- a/content/docs/request.md +++ b/content/docs/request.md @@ -81,7 +81,7 @@ In the following example, we read and print the request payload chunk by chunk: [multipartstruct]: https://docs.rs/actix-multipart/0.2/actix_multipart/struct.Multipart.html [fieldstruct]: https://docs.rs/actix-multipart/0.2/actix_multipart/struct.Field.html [multipartexample]: https://github.com/actix/examples/tree/master/multipart/ -[urlencoded]: https://docs.rs/actix-web/2/actix_web/dev/struct.UrlEncoded.html -[payloadextractor]: https://docs.rs/actix-web/2/actix_web/web/struct.Payload.html +[urlencoded]: https://docs.rs/actix-web/3/actix_web/dev/struct.UrlEncoded.html +[payloadextractor]: https://docs.rs/actix-web/3/actix_web/web/struct.Payload.html [multipartcrate]: https://crates.io/crates/actix-multipart -[formencoded]:Jhttps://docs.rs/actix-web/2/actix_web/web/struct.Form.html +[formencoded]:Jhttps://docs.rs/actix-web/3/actix_web/web/struct.Form.html diff --git a/content/docs/response.md b/content/docs/response.md index b63445b..53a99b8 100644 --- a/content/docs/response.md +++ b/content/docs/response.md @@ -71,5 +71,5 @@ The type `T` must implement the `Serialize` trait from *serde*. {{< include-example example="responses" file="json_resp.rs" section="json-resp" >}} -[responsebuilder]: https://docs.rs/actix-web/2/actix_web/dev/struct.HttpResponseBuilder.html -[compressmidddleware]: https://docs.rs/actix-web/2/actix_web/middleware/struct.Compress.html +[responsebuilder]: https://docs.rs/actix-web/3/actix_web/dev/struct.HttpResponseBuilder.html +[compressmidddleware]: https://docs.rs/actix-web/3/actix_web/middleware/struct.Compress.html diff --git a/content/docs/server.md b/content/docs/server.md index b5fc919..c07a1c6 100644 --- a/content/docs/server.md +++ b/content/docs/server.md @@ -6,32 +6,32 @@ weight: 150 # The HTTP Server -The [**HttpServer**][httpserverstruct] type is responsible for serving http requests. +The [**HttpServer**][httpserverstruct] type is responsible for serving HTTP requests. `HttpServer` accepts an application factory as a parameter, and the application factory must have `Send` + `Sync` boundaries. More about that in the *multi-threading* section. To bind to a specific socket address, [`bind()`][bindmethod] must be used, and it may be called multiple times. To bind ssl socket, [`bind_openssl()`][bindopensslmethod] or -[`bind_rustls()`][bindrusttls] should be used. To run the http server, use the `HttpServer::run()` +[`bind_rustls()`][bindrusttls] should be used. To run the HTTP server, use the `HttpServer::run()` method. {{< include-example example="server" section="main" >}} The `run()` method returns an instance of the [`Server`][server] type. Methods of server type -could be used for managing the http server +could be used for managing the HTTP server - `pause()` - Pause accepting incoming connections - `resume()` - Resume accepting incoming connections - `stop()` - Stop incoming connection processing, stop all workers and exit -The following example shows how to start the http server in a separate thread. +The following example shows how to start the HTTP server in a separate thread. {{< include-example example="server" file="signals.rs" section="signals" >}} ## Multi-threading -`HttpServer` automatically starts a number of http *workers*, by default this number is +`HttpServer` automatically starts a number of HTTP *workers*, by default this number is equal to the number of logical CPUs in the system. This number can be overridden with the [`HttpServer::workers()`][workers] method. @@ -120,7 +120,7 @@ Actix can wait for requests on a keep-alive connection. If the first option above is selected, then *keep alive* state is calculated based on the response's *connection-type*. By default `HttpResponse::connection_type` is not -defined. In that case *keep alive* is defined by the request's http version. +defined. In that case *keep alive* is defined by the request's HTTP version. > *keep alive* is **off** for *HTTP/1.0* and is **on** for *HTTP/1.1* and *HTTP/2.0*. @@ -149,14 +149,14 @@ are available on unix systems. > It is possible to disable signal handling with [`HttpServer::disable_signals()`][disablesignals] method. -[server]: https://docs.rs/actix-web/2/actix_web/dev/struct.Server.html -[httpserverstruct]: https://docs.rs/actix-web/2/actix_web/struct.HttpServer.html -[bindmethod]: https://docs.rs/actix-web/2/actix_web/struct.HttpServer.html#method.bind -[bindopensslmethod]: https://docs.rs/actix-web/2/actix_web/struct.HttpServer.html#method.bind_openssl -[bindrusttls]: https://docs.rs/actix-web/2/actix_web/struct.HttpServer.html#method.bind_rustls -[startmethod]: https://docs.rs/actix-web/2/actix_web/struct.HttpServer.html#method.start -[workers]: https://docs.rs/actix-web/2/actix_web/struct.HttpServer.html#method.workers +[server]: https://docs.rs/actix-web/3/actix_web/dev/struct.Server.html +[httpserverstruct]: https://docs.rs/actix-web/3/actix_web/struct.HttpServer.html +[bindmethod]: https://docs.rs/actix-web/3/actix_web/struct.HttpServer.html#method.bind +[bindopensslmethod]: https://docs.rs/actix-web/3/actix_web/struct.HttpServer.html#method.bind_openssl +[bindrusttls]: https://docs.rs/actix-web/3/actix_web/struct.HttpServer.html#method.bind_rustls +[startmethod]: https://docs.rs/actix-web/3/actix_web/struct.HttpServer.html#method.start +[workers]: https://docs.rs/actix-web/3/actix_web/struct.HttpServer.html#method.workers [tlsalpn]: https://tools.ietf.org/html/rfc7301 [exampleopenssl]: https://github.com/actix/examples/blob/master/openssl -[shutdowntimeout]: https://docs.rs/actix-web/2/actix_web/struct.HttpServer.html#method.shutdown_timeout -[disablesignals]: https://docs.rs/actix-web/2/actix_web/struct.HttpServer.html#method.disable_signals +[shutdowntimeout]: https://docs.rs/actix-web/3/actix_web/struct.HttpServer.html#method.shutdown_timeout +[disablesignals]: https://docs.rs/actix-web/3/actix_web/struct.HttpServer.html#method.disable_signals diff --git a/content/docs/testing.md b/content/docs/testing.md index 3a8c474..7e5f172 100644 --- a/content/docs/testing.md +++ b/content/docs/testing.md @@ -20,7 +20,7 @@ For unit testing, actix-web provides a request builder type. # Integration tests There are a few methods for testing your application. Actix-web can be used -to run the application with specific handlers in a real http server. +to run the application with specific handlers in a real HTTP server. `TestRequest::get()`, `TestRequest::post()` and other methods can be used to send requests to the test server. @@ -28,7 +28,7 @@ methods can be used to send requests to the test server. To create a `Service` for testing, use the `test::init_service` method which accepts a regular `App` builder. -> Check the [api documentation][actixdocs] for more information. +> Check the [API documentation][actixdocs] for more information. {{< include-example example="testing" file="integration_one.rs" section="integration-one" >}} @@ -47,6 +47,6 @@ resulting [*ResponseBody*][responsebody] into a future and execute it, for examp {{< include-example example="testing" file="stream_response.rs" section="stream-response" >}} [serversentevents]: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events -[responsebody]: https://docs.rs/actix-web/2/actix_web/body/enum.ResponseBody.html -[actixdocs]: https://docs.rs/actix-web/2/actix_web/test/index.html -[testrequest]: https://docs.rs/actix-web/2/actix_web/test/struct.TestRequest.html +[responsebody]: https://docs.rs/actix-web/3/actix_web/body/enum.ResponseBody.html +[actixdocs]: https://docs.rs/actix-web/3/actix_web/test/index.html +[testrequest]: https://docs.rs/actix-web/3/actix_web/test/struct.TestRequest.html diff --git a/content/docs/url-dispatch.md b/content/docs/url-dispatch.md index 17edd50..8080a45 100644 --- a/content/docs/url-dispatch.md +++ b/content/docs/url-dispatch.md @@ -27,7 +27,7 @@ in *http://localhost:8080/foo/bar?q=value*). The [*App::route()*][approute] method provides simple way of registering routes. This method adds a single route to application routing table. This method accepts a *path pattern*, -*http method* and a handler function. `route()` method could be called multiple times +*HTTP method* and a handler function. `route()` method could be called multiple times for the same path, in that case, multiple routes register for the same resource path. {{< include-example example="url-dispatch" section="main" >}} @@ -40,7 +40,7 @@ adds a single [resource][webresource] to application routing table. This method {{< include-example example="url-dispatch" file="resource.rs" section="resource" >}} If a resource does not contain any route or does not have any matching routes, it -returns *NOT FOUND* http response. +returns *NOT FOUND* HTTP response. ## Configuring a Route @@ -197,7 +197,7 @@ When matching the following URL: http://example.com/foo/La%20Pe%C3%B1a ``` -The matchdict will look like so (the value is URL-decoded): +The match dictionary will look like so (the value is URL-decoded): ``` Params{'bar': 'La Pe\xf1a'} @@ -247,7 +247,7 @@ A scoped layout of these paths would appear as follows {{< include-example example="url-dispatch" file="scope.rs" section="scope" >}} A *scoped* path can contain variable path segments as resources. Consistent with -unscoped paths. +un-scoped paths. You can get variable path segments from `HttpRequest::match_info()`. [`Path` extractor][pathextractor] also is able to extract scope level variable segments. @@ -283,7 +283,7 @@ safe to interpolate within, or use as a suffix of, a path without additional che Actix provides functionality for type safe path information extraction. [*Path*][pathstruct] extracts information, destination type could be defined in several different forms. Simplest -approach is to use `tuple` type. Each element in tuple must correpond to one element from +approach is to use `tuple` type. Each element in tuple must correspond to one element from path pattern. i.e. you can match path pattern `/{id}/{username}/` against `Path<(u32, String)>` type, but `Path<(String, String, String)>` type will always fail. @@ -363,7 +363,7 @@ it will generate a URL with that same path. You can think of a guard as a simple function that accepts a *request* object reference and returns *true* or *false*. Formally, a guard is any object that implements the [`Guard`][guardtrait] trait. Actix provides several predicates, you can check -[functions section][guardfuncs] of api docs. +[functions section][guardfuncs] of API docs. Here is a simple guard that check that a request contains a specific *header*: @@ -407,24 +407,24 @@ with `App::service()` method. {{< include-example example="url-dispatch" file="dhandler.rs" section="default" >}} [handlersection]: ../handlers/ -[approute]: https://docs.rs/actix-web/2/actix_web/struct.App.html#method.route -[appservice]: https://docs.rs/actix-web/2/actix_web/struct.App.html?search=#method.service -[webresource]: https://docs.rs/actix-web/2/actix_web/struct.Resource.html -[resourcehandler]: https://docs.rs/actix-web/2/actix_web/struct.Resource.html#method.route -[route]: https://docs.rs/actix-web/2/actix_web/struct.Route.html -[routeguard]: https://docs.rs/actix-web/2/actix_web/struct.Route.html#method.guard -[routemethod]: https://docs.rs/actix-web/2/actix_web/struct.Route.html#method.method -[routeto]: https://docs.rs/actix-web/2/actix_web/struct.Route.html#method.to -[routetoasync]: https://docs.rs/actix-web/2/actix_web/struct.Route.html#method.to_async -[matchinfo]: https://docs.rs/actix-web/2/actix_web/struct.HttpRequest.html#method.match_info -[pathget]: https://docs.rs/actix-web/2/actix_web/dev/struct.Path.html#method.get -[pathstruct]: https://docs.rs/actix-web/2/actix_web/dev/struct.Path.html -[query]: https://docs.rs/actix-web/2/actix_web/web/struct.Query.html -[urlfor]: https://docs.rs/actix-web/2/actix_web/struct.HttpRequest.html#method.url_for +[approute]: https://docs.rs/actix-web/3/actix_web/struct.App.html#method.route +[appservice]: https://docs.rs/actix-web/3/actix_web/struct.App.html?search=#method.service +[webresource]: https://docs.rs/actix-web/3/actix_web/struct.Resource.html +[resourcehandler]: https://docs.rs/actix-web/3/actix_web/struct.Resource.html#method.route +[route]: https://docs.rs/actix-web/3/actix_web/struct.Route.html +[routeguard]: https://docs.rs/actix-web/3/actix_web/struct.Route.html#method.guard +[routemethod]: https://docs.rs/actix-web/3/actix_web/struct.Route.html#method.method +[routeto]: https://docs.rs/actix-web/3/actix_web/struct.Route.html#method.to +[routetoasync]: https://docs.rs/actix-web/3/actix_web/struct.Route.html#method.to_async +[matchinfo]: https://docs.rs/actix-web/3/actix_web/struct.HttpRequest.html#method.match_info +[pathget]: https://docs.rs/actix-web/3/actix_web/dev/struct.Path.html#method.get +[pathstruct]: https://docs.rs/actix-web/3/actix_web/dev/struct.Path.html +[query]: https://docs.rs/actix-web/3/actix_web/web/struct.Query.html +[urlfor]: https://docs.rs/actix-web/3/actix_web/struct.HttpRequest.html#method.url_for [urlobj]: https://docs.rs/url/1.7.2/url/struct.Url.html -[guardtrait]: https://docs.rs/actix-web/2/actix_web/guard/trait.Guard.html -[guardfuncs]: https://docs.rs/actix-web/2/actix_web/guard/index.html#functions -[requestextensions]: https://docs.rs/actix-web/2/actix_web/struct.HttpRequest.html#method.extensions -[implfromrequest]: https://docs.rs/actix-web/2/actix_web/trait.FromRequest.html -[implresponder]: https://docs.rs/actix-web/2/actix_web/trait.Responder.html +[guardtrait]: https://docs.rs/actix-web/3/actix_web/guard/trait.Guard.html +[guardfuncs]: https://docs.rs/actix-web/3/actix_web/guard/index.html#functions +[requestextensions]: https://docs.rs/actix-web/3/actix_web/struct.HttpRequest.html#method.extensions +[implfromrequest]: https://docs.rs/actix-web/3/actix_web/trait.FromRequest.html +[implresponder]: https://docs.rs/actix-web/3/actix_web/trait.Responder.html [pathextractor]: ../extractors diff --git a/content/docs/websockets.md b/content/docs/websockets.md index 4e200cf..0ac6c3c 100644 --- a/content/docs/websockets.md +++ b/content/docs/websockets.md @@ -1,6 +1,6 @@ --- title: Websockets -menu: docs_proto +menu: docs_protocols weight: 240 --- @@ -15,10 +15,10 @@ The following is an example of a simple websocket echo server: > A simple websocket echo server example is available in the [examples directory][examples]. -> An example chat server with the ability to chat over a websocket or tcp connection +> An example chat server with the ability to chat over a websocket or TCP connection > is available in [websocket-chat directory][chat] [message]: https://docs.rs/actix-web-actors/2/actix_web_actors/ws/enum.Message.html -[payload]: https://docs.rs/actix-web/2/actix_web/web/struct.Payload.html +[payload]: https://docs.rs/actix-web/3/actix_web/web/struct.Payload.html [examples]: https://github.com/actix/examples/tree/master/websocket/ [chat]: https://github.com/actix/examples/tree/master/websocket-chat/ diff --git a/content/docs/whatis.md b/content/docs/whatis.md index 67765d6..02c325e 100644 --- a/content/docs/whatis.md +++ b/content/docs/whatis.md @@ -4,24 +4,29 @@ menu: docs_intro weight: 100 --- -# Actix is Multiple Things +# Actix is an ecosystem of crates -Actix is a few things. The base of it is a powerful actor system for Rust on -top of which the `actix-web` system was originally built. This is what you are most -likely going to work with. What `actix-web` gives you is a fun and very fast web -development framework. +Actix is a few things. The base of it is a powerful actor system for Rust on top of which the +`actix-web` system was originally built. This is what you are most likely going to work with. What +`actix-web` gives you is a powerful and very fast web development framework. -We call `actix-web` a small and pragmatic framework. For all intents and purposes -it's a microframework with a few twists. If you are already a Rust programmer -you will probably find yourself at home quickly, but even if you are coming from -another programming language you should find `actix-web` easy to pick up. +We call `actix-web` a small and pragmatic framework. For all intents and purposes it's a +micro-framework with a few twists. If you are already a Rust programmer you will probably find +yourself at home quickly, but even if you are coming from another programming language you should +find `actix-web` easy to pick up. -An application developed with `actix-web` will expose an HTTP server contained -within a native executable. You can either put this behind another HTTP server like -nginx or serve it up as-is. Even in the complete absence of another HTTP -server `actix-web` is powerful enough to provide HTTP 1 and HTTP 2 support as -well as SSL/TLS. This makes it useful for building small services ready for +An application developed with `actix-web` will expose an HTTP server contained within a native +executable. You can either put this behind another HTTP server like nginx or serve it up as-is. Even +in the complete absence of another HTTP server `actix-web` is powerful enough to provide HTTP/1 and +HTTP/2 support as well as TLS (HTTPS). This makes it useful for building small services ready for distribution. -Most importantly: `actix-web` runs on Rust {{< rust-version "actix-web" >}} or later -and it works with stable releases. +Most importantly: `actix-web` runs on Rust {{< rust-version "actix-web" >}} or later and it works +with stable releases. + + + + + + +[tokio]: https://tokio.rs diff --git a/examples/Cargo.toml b/examples/Cargo.toml index a9d2fb1..2ed682d 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -1,30 +1,26 @@ [workspace] members = [ "application", + "async-handlers", "easy-form-handling", + "either", + "errors", + "extractors", "flexible-responders", "getting-started", - "main-example", - "powerful-extractors", - "request-routing", - "server", - "url-dispatch", - "responder-trait", - "either", - "extractors", - "autoreload", - "errors", - "requests", - "responses", - "middleware", - "static-files", "http2", - "testing", - "async-handlers", - "websockets", + "main-example", + "middleware", + "powerful-extractors", "request-handlers", + "request-routing", + "requests", + "responder-trait", + "responses", + "server", + "static-files", + "testing", + "url-dispatch", + "websockets", ] -exclude = [ - "og_databases", - "sentry", -] +exclude = ["databases", "sentry"] diff --git a/examples/application/Cargo.toml b/examples/application/Cargo.toml index f055c6a..5483f29 100644 --- a/examples/application/Cargo.toml +++ b/examples/application/Cargo.toml @@ -5,6 +5,5 @@ edition = "2018" workspace = "../" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" -actix-service = "1.0" +actix-web = "3" +actix-service = "1" diff --git a/examples/application/src/app.rs b/examples/application/src/app.rs index c31668b..b0c3871 100644 --- a/examples/application/src/app.rs +++ b/examples/application/src/app.rs @@ -1,18 +1,23 @@ +#![allow(dead_code)] + // -use actix_web::{web, App, Responder, HttpServer}; +use actix_web::{web, App, HttpServer, Responder}; async fn index() -> impl Responder { "Hello world!" } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new().service( - web::scope("/app").route("/index.html", web::get().to(index)), + // prefixes all resources and routes attached to it... + web::scope("/app") + // ...so this handles requests for `GET /app/index.html` + .route("/index.html", web::get().to(index)), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/application/src/combine.rs b/examples/application/src/combine.rs index ce11025..0f7cbc0 100644 --- a/examples/application/src/combine.rs +++ b/examples/application/src/combine.rs @@ -1,24 +1,27 @@ +#![allow(dead_code)] + use actix_web::{web, App, HttpResponse, HttpServer}; // struct State1; struct State2; -#[rustfmt::skip] -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .service( web::scope("/app1") .data(State1) - .route("/", web::to(|| HttpResponse::Ok()))) + .route("/", web::to(|| HttpResponse::Ok())), + ) .service( web::scope("/app2") .data(State2) - .route("/", web::to(|| HttpResponse::Ok()))) + .route("/", web::to(|| HttpResponse::Ok())), + ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/application/src/config.rs b/examples/application/src/config.rs index 486d64e..8d0571e 100644 --- a/examples/application/src/config.rs +++ b/examples/application/src/config.rs @@ -1,3 +1,5 @@ +#![allow(dead_code)] + // use actix_web::{web, App, HttpResponse, HttpServer}; @@ -19,7 +21,7 @@ fn config(cfg: &mut web::ServiceConfig) { ); } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() @@ -27,7 +29,7 @@ async fn main() -> std::io::Result<()> { .service(web::scope("/api").configure(scoped_config)) .route("/", web::get().to(|| HttpResponse::Ok().body("/"))) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/application/src/main.rs b/examples/application/src/main.rs index d1a7afa..86a1ade 100644 --- a/examples/application/src/main.rs +++ b/examples/application/src/main.rs @@ -8,7 +8,7 @@ pub mod state; pub mod vh; // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() @@ -20,7 +20,7 @@ async fn main() -> std::io::Result<()> { ) .route("/", web::to(|| HttpResponse::Ok())) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/application/src/mutable_state.rs b/examples/application/src/mutable_state.rs index 855545a..fc43cec 100644 --- a/examples/application/src/mutable_state.rs +++ b/examples/application/src/mutable_state.rs @@ -15,7 +15,7 @@ async fn index(data: web::Data) -> String { // // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { let counter = web::Data::new(AppStateWithCounter { counter: Mutex::new(0), @@ -28,7 +28,7 @@ async fn main() -> std::io::Result<()> { .app_data(counter.clone()) // <- register the created data .route("/", web::get().to(index)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/application/src/scope.rs b/examples/application/src/scope.rs index 84a7087..28364e5 100644 --- a/examples/application/src/scope.rs +++ b/examples/application/src/scope.rs @@ -1,16 +1,14 @@ -use actix_web::{web, App, HttpRequest, Responder}; +use actix_web::{get, web, App, HttpRequest, Responder}; +#[get("/show")] async fn show_users(_req: HttpRequest) -> impl Responder { "unimplemented!" } -#[rustfmt::skip] // -#[actix_rt::main] +#[actix_web::main] async fn main() { - App::new() - .service( - web::scope("/users") - .route("/show", web::get().to(show_users))); + let scope = web::scope("/users").service(show_users); + App::new().service(scope); } // diff --git a/examples/application/src/state.rs b/examples/application/src/state.rs index 2dcf672..c73fbc2 100644 --- a/examples/application/src/state.rs +++ b/examples/application/src/state.rs @@ -1,12 +1,12 @@ // -use actix_web::{web, App, HttpServer}; -use std::sync::Mutex; +use actix_web::{get, web, App, HttpServer}; // This struct represents state struct AppState { app_name: String, } +#[get("/")] async fn index(data: web::Data) -> String { let app_name = &data.app_name; // <- get app_name @@ -15,16 +15,16 @@ async fn index(data: web::Data) -> String { // // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .data(AppState { app_name: String::from("Actix-web"), }) - .route("/", web::get().to(index)) + .service(index) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/application/src/vh.rs b/examples/application/src/vh.rs index d1d6c82..4ad476f 100644 --- a/examples/application/src/vh.rs +++ b/examples/application/src/vh.rs @@ -1,7 +1,7 @@ use actix_web::{guard, web, App, HttpResponse, HttpServer}; // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() @@ -17,7 +17,7 @@ async fn main() -> std::io::Result<()> { ) .route("/", web::to(|| HttpResponse::Ok())) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/async-handlers/Cargo.toml b/examples/async-handlers/Cargo.toml index c1e24a2..2ba3c07 100644 --- a/examples/async-handlers/Cargo.toml +++ b/examples/async-handlers/Cargo.toml @@ -4,7 +4,6 @@ version = "2.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" futures = "0.3.1" bytes = "0.5" diff --git a/examples/async-handlers/src/stream.rs b/examples/async-handlers/src/stream.rs index 3399f33..96f9d86 100644 --- a/examples/async-handlers/src/stream.rs +++ b/examples/async-handlers/src/stream.rs @@ -1,10 +1,11 @@ // -use actix_web::{web, App, HttpServer, Error, HttpResponse}; +use actix_web::{get, App, Error, HttpResponse, HttpServer}; use bytes::Bytes; -use futures::stream::once; use futures::future::ok; +use futures::stream::once; -async fn index() -> HttpResponse { +#[get("/stream")] +async fn stream() -> HttpResponse { let body = once(ok::<_, Error>(Bytes::from_static(b"test"))); HttpResponse::Ok() @@ -12,10 +13,10 @@ async fn index() -> HttpResponse { .streaming(body) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - HttpServer::new(|| App::new().route("/async", web::to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(stream)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/autoreload/Cargo.toml b/examples/autoreload/Cargo.toml deleted file mode 100644 index 1561236..0000000 --- a/examples/autoreload/Cargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "autoreload" -version = "1.0.0" -edition = "2018" - -[dependencies] -actix-web = "2.0" -actix-rt = "1.0" -listenfd = "0.3" diff --git a/examples/autoreload/src/main.rs b/examples/autoreload/src/main.rs deleted file mode 100644 index 3ceff63..0000000 --- a/examples/autoreload/src/main.rs +++ /dev/null @@ -1,22 +0,0 @@ -// -use actix_web::{web, App, HttpRequest, HttpServer, Responder}; -use listenfd::ListenFd; - -async fn index(_req: HttpRequest) -> impl Responder { - "Hello World!" -} - -#[actix_rt::main] -async fn main() -> std::io::Result<()> { - let mut listenfd = ListenFd::from_env(); - let mut server = HttpServer::new(|| App::new().route("/", web::get().to(index))); - - server = if let Some(l) = listenfd.take_tcp_listener(0).unwrap() { - server.listen(l)? - } else { - server.bind("127.0.0.1:3000")? - }; - - server.run().await -} -// diff --git a/examples/databases/Cargo.toml b/examples/databases/Cargo.toml new file mode 100644 index 0000000..1fcc13a --- /dev/null +++ b/examples/databases/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "databases" +version = "1.0.0" +edition = "2018" + +[dependencies] +actix-web = "3" diff --git a/examples/databases/src/main.rs b/examples/databases/src/main.rs new file mode 100644 index 0000000..95aa2a4 --- /dev/null +++ b/examples/databases/src/main.rs @@ -0,0 +1,63 @@ +// +fn insert_new_user(db: &SqliteConnection, user: CreateUser) -> Result { + use self::schema::users::dsl::*; + + // Create insertion model + let uuid = format!("{}", uuid::Uuid::new_v4()); + let new_user = models::NewUser { + id: &uuid, + name: &user.name, + }; + + // normal diesel operations + diesel::insert_into(users) + .values(&new_user) + .execute(&self.0) + .expect("Error inserting person"); + + let mut items = users + .filter(id.eq(&uuid)) + .load::(&self.0) + .expect("Error loading person"); + + Ok(items.pop().unwrap()) +} +// + +//
+type DbPool = r2d2::Pool>; + +#[actix_web::main] +async fn main() -> io::Result<()> { + // Create connection pool + let pool = r2d2::Pool::builder() + .build(manager) + .expect("Failed to create pool."); + + // Start HTTP server + HttpServer::new(move || { + App::new::data(pool.clone()) + .resource("/{name}", web::get().to(index)) + }) + .bind("127.0.0.1:8080")? + .run() + .await +} +//
+ +// +async fn index(req: web::Data, name: web::Path<(String)>) -> impl Responder { + let name = name.into_inner(); + + let conn = pool.get().expect("couldn't get db connection from pool"); + + let user = web::block(move || actions::insert_new_user(&conn, &user)) + .await + .map_err(|e| { + eprintln!("{}", e); + HttpResponse::InternalServerError().finish() + })?; + + Ok(HttpResponse::Ok().json(user)) +} +// diff --git a/examples/easy-form-handling/Cargo.toml b/examples/easy-form-handling/Cargo.toml index 1af8b96..737ea4c 100644 --- a/examples/easy-form-handling/Cargo.toml +++ b/examples/easy-form-handling/Cargo.toml @@ -4,6 +4,5 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" serde = "1.0" diff --git a/examples/easy-form-handling/src/main.rs b/examples/easy-form-handling/src/main.rs index 1bc63f4..bf555b3 100644 --- a/examples/easy-form-handling/src/main.rs +++ b/examples/easy-form-handling/src/main.rs @@ -18,14 +18,14 @@ async fn register(form: web::Form) -> impl Responder { format!("Hello {} from {}!", form.username, form.country) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/", web::get().to(index)) .route("/register", web::post().to(register)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/either/Cargo.toml b/examples/either/Cargo.toml index 9f8a8f8..4f49fc6 100644 --- a/examples/either/Cargo.toml +++ b/examples/either/Cargo.toml @@ -4,5 +4,4 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "1.0" -futures = "0.1" +actix-web = "3" diff --git a/examples/either/src/main.rs b/examples/either/src/main.rs index ab5208c..8b45797 100644 --- a/examples/either/src/main.rs +++ b/examples/either/src/main.rs @@ -3,7 +3,7 @@ use actix_web::{Either, Error, HttpResponse}; type RegisterResult = Either>; -fn index() -> RegisterResult { +async fn index() -> RegisterResult { if is_a_variant() { // <- choose variant A Either::A(HttpResponse::BadRequest().body("Bad data")) @@ -14,14 +14,14 @@ fn index() -> RegisterResult { } // -fn main() { +#[actix_web::main] +async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind("127.0.0.1:8088") - .unwrap() + .bind("127.0.0.1:8080")? .run() - .unwrap(); + .await } fn is_a_variant() -> bool { diff --git a/examples/errors/Cargo.toml b/examples/errors/Cargo.toml index ed0f4f6..45995a3 100644 --- a/examples/errors/Cargo.toml +++ b/examples/errors/Cargo.toml @@ -4,9 +4,8 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0.0" -actix-rt = "1.0.0" -env_logger = "0.7.1" -log = "0.4.8" -failure = "0.1.6" -actix-http = "1.0.1" +actix-web = "3" +derive_more = "0.99" +env_logger = "0.7" +log = "0.4" +# actix-http = "1" diff --git a/examples/errors/src/helpers.rs b/examples/errors/src/helpers.rs index 690a2d2..9807b95 100644 --- a/examples/errors/src/helpers.rs +++ b/examples/errors/src/helpers.rs @@ -1,12 +1,12 @@ -use actix_web::{web, App}; // -use actix_web::{error, Result}; +use actix_web::{error, get, App, HttpServer, Result}; #[derive(Debug)] struct MyError { name: &'static str, } +#[get("/")] async fn index() -> Result<&'static str> { let result: Result<&'static str, MyError> = Err(MyError { name: "test error" }); @@ -14,12 +14,10 @@ async fn index() -> Result<&'static str> { } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::HttpServer; - - HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/errors/src/logging.rs b/examples/errors/src/logging.rs index 5e4987d..82d299c 100644 --- a/examples/errors/src/logging.rs +++ b/examples/errors/src/logging.rs @@ -1,10 +1,10 @@ // -use actix_web::{error, Result}; -use failure::Fail; +use actix_web::{error, get, middleware::Logger, App, HttpServer, Result}; use log::debug; +use derive_more::{Display, Error}; -#[derive(Fail, Debug)] -#[fail(display = "my error")] +#[derive(Debug, Display, Error)] +#[display(fmt = "my error: {}", name)] pub struct MyError { name: &'static str, } @@ -12,27 +12,22 @@ pub struct MyError { // Use default implementation for `error_response()` method impl error::ResponseError for MyError {} +#[get("/")] async fn index() -> Result<&'static str, MyError> { let err = MyError { name: "test error" }; debug!("{}", err); Err(err) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{middleware::Logger, web, App, HttpServer}; - std::env::set_var("RUST_LOG", "my_errors=debug,actix_web=info"); std::env::set_var("RUST_BACKTRACE", "1"); env_logger::init(); - HttpServer::new(|| { - App::new() - .wrap(Logger::default()) - .route("/", web::get().to(index)) - }) - .bind("127.0.0.1:8088")? - .run() - .await + HttpServer::new(|| App::new().wrap(Logger::default()).service(index)) + .bind("127.0.0.1:8080")? + .run() + .await } // diff --git a/examples/errors/src/main.rs b/examples/errors/src/main.rs index ac6d13b..31b462f 100644 --- a/examples/errors/src/main.rs +++ b/examples/errors/src/main.rs @@ -6,10 +6,10 @@ pub mod recommend_two; // use actix_web::{error, Result}; -use failure::Fail; +use derive_more::{Display, Error}; -#[derive(Fail, Debug)] -#[fail(display = "my error")] +#[derive(Debug, Display, Error)] +#[display(fmt = "my error: {}", name)] struct MyError { name: &'static str, } @@ -22,12 +22,12 @@ async fn index() -> Result<&'static str, MyError> { } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/errors/src/override_error.rs b/examples/errors/src/override_error.rs index ad7c786..dd01b1c 100644 --- a/examples/errors/src/override_error.rs +++ b/examples/errors/src/override_error.rs @@ -1,22 +1,24 @@ -use actix_web::{web, App}; // -use actix_http::ResponseBuilder; -use actix_web::{error, http::header, http::StatusCode, HttpResponse}; -use failure::Fail; +use actix_web::{ + dev::HttpResponseBuilder, error, get, http::header, http::StatusCode, App, HttpResponse, +}; +use derive_more::{Display, Error}; -#[derive(Fail, Debug)] +#[derive(Debug, Display, Error)] enum MyError { - #[fail(display = "internal error")] + #[display(fmt = "internal error")] InternalError, - #[fail(display = "bad request")] + + #[display(fmt = "bad request")] BadClientData, - #[fail(display = "timeout")] + + #[display(fmt = "timeout")] Timeout, } impl error::ResponseError for MyError { fn error_response(&self) -> HttpResponse { - ResponseBuilder::new(self.status_code()) + HttpResponseBuilder::new(self.status_code()) .set_header(header::CONTENT_TYPE, "text/html; charset=utf-8") .body(self.to_string()) } @@ -30,30 +32,28 @@ impl error::ResponseError for MyError { } } +#[get("/")] async fn index() -> Result<&'static str, MyError> { Err(MyError::BadClientData) } // +#[get("/e2")] async fn error2() -> Result<&'static str, MyError> { Err(MyError::InternalError) } +#[get("/e3")] async fn error3() -> Result<&'static str, MyError> { Err(MyError::Timeout) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::HttpServer; - HttpServer::new(|| { - App::new() - .route("/", web::get().to(index)) - .route("/e2", web::get().to(error2)) - .route("/e3", web::get().to(error3)) - }) - .bind("127.0.0.1:8088")? - .run() - .await + HttpServer::new(|| App::new().service(index).service(error2).service(error3)) + .bind("127.0.0.1:8080")? + .run() + .await } diff --git a/examples/errors/src/recommend_one.rs b/examples/errors/src/recommend_one.rs index 1d42e4e..4946244 100644 --- a/examples/errors/src/recommend_one.rs +++ b/examples/errors/src/recommend_one.rs @@ -1,17 +1,19 @@ // -use actix_http::ResponseBuilder; -use actix_web::{error, http::header, http::StatusCode, HttpResponse}; -use failure::Fail; +use actix_web::{ + dev::HttpResponseBuilder, error, get, http::header, http::StatusCode, App, HttpResponse, + HttpServer, +}; +use derive_more::{Display, Error}; -#[derive(Fail, Debug)] +#[derive(Debug, Display, Error)] enum UserError { - #[fail(display = "Validation error on field: {}", field)] + #[display(fmt = "Validation error on field: {}", field)] ValidationError { field: String }, } impl error::ResponseError for UserError { fn error_response(&self) -> HttpResponse { - ResponseBuilder::new(self.status_code()) + HttpResponseBuilder::new(self.status_code()) .set_header(header::CONTENT_TYPE, "text/html; charset=utf-8") .body(self.to_string()) } @@ -22,18 +24,18 @@ impl error::ResponseError for UserError { } } // + +#[get("/")] async fn index() -> Result<&'static str, UserError> { Err(UserError::ValidationError { field: "bad stuff".to_string(), }) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{web, App, HttpServer}; - - HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/errors/src/recommend_two.rs b/examples/errors/src/recommend_two.rs index b189428..5eac113 100644 --- a/examples/errors/src/recommend_two.rs +++ b/examples/errors/src/recommend_two.rs @@ -1,17 +1,19 @@ // -use actix_http::ResponseBuilder; -use actix_web::{error, http::header, http::StatusCode, HttpResponse}; -use failure::Fail; +use actix_web::{ + dev::HttpResponseBuilder, error, get, http::header, http::StatusCode, App, HttpResponse, + HttpServer, +}; +use derive_more::{Display, Error}; -#[derive(Fail, Debug)] +#[derive(Debug, Display, Error)] enum UserError { - #[fail(display = "An internal error occurred. Please try again later.")] + #[display(fmt = "An internal error occurred. Please try again later.")] InternalError, } impl error::ResponseError for UserError { fn error_response(&self) -> HttpResponse { - ResponseBuilder::new(self.status_code()) + HttpResponseBuilder::new(self.status_code()) .set_header(header::CONTENT_TYPE, "text/html; charset=utf-8") .body(self.to_string()) } @@ -22,22 +24,21 @@ impl error::ResponseError for UserError { } } +#[get("/")] async fn index() -> Result<&'static str, UserError> { - do_thing_that_failes().map_err(|_e| UserError::InternalError)?; + do_thing_that_fails().map_err(|_e| UserError::InternalError)?; Ok("success!") } // -fn do_thing_that_failes() -> Result<(), std::io::Error> { +fn do_thing_that_fails() -> Result<(), std::io::Error> { Err(std::io::Error::new(std::io::ErrorKind::Other, "some error")) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{web, App, HttpServer}; - - HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/extractors/Cargo.toml b/examples/extractors/Cargo.toml index a455806..4842587 100644 --- a/examples/extractors/Cargo.toml +++ b/examples/extractors/Cargo.toml @@ -4,7 +4,6 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" serde = "1.0" serde_json = "1.0" diff --git a/examples/extractors/src/form.rs b/examples/extractors/src/form.rs index 43dc763..d03dd28 100644 --- a/examples/extractors/src/form.rs +++ b/examples/extractors/src/form.rs @@ -1,5 +1,5 @@ //
-use actix_web::{web, Result}; +use actix_web::{post, web, App, HttpServer, Result}; use serde::Deserialize; #[derive(Deserialize)] @@ -10,17 +10,16 @@ struct FormData { /// extract form data using serde /// this handler gets called only if the content type is *x-www-form-urlencoded* /// and the content of the request could be deserialized to a `FormData` struct +#[post("/")] async fn index(form: web::Form) -> Result { Ok(format!("Welcome {}!", form.username)) } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{App, HttpServer}; - - HttpServer::new(|| App::new().route("/", web::post().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/extractors/src/json_one.rs b/examples/extractors/src/json_one.rs index b5c2675..f38084d 100644 --- a/examples/extractors/src/json_one.rs +++ b/examples/extractors/src/json_one.rs @@ -1,5 +1,5 @@ // -use actix_web::{web, Result}; +use actix_web::{get, web, App, HttpServer, Result}; use serde::Deserialize; #[derive(Deserialize)] @@ -8,17 +8,16 @@ struct Info { } /// deserialize `Info` from request's body +#[get("/")] async fn index(info: web::Json) -> Result { Ok(format!("Welcome {}!", info.username)) } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{App, HttpServer}; - - HttpServer::new(|| App::new().route("/", web::post().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/extractors/src/json_two.rs b/examples/extractors/src/json_two.rs index bf7b9f9..30d2090 100644 --- a/examples/extractors/src/json_two.rs +++ b/examples/extractors/src/json_two.rs @@ -1,5 +1,7 @@ +#![allow(dead_code)] + // -use actix_web::{error, web, FromRequest, HttpResponse, Responder}; +use actix_web::{error, web, App, FromRequest, HttpResponse, HttpServer, Responder}; use serde::Deserialize; #[derive(Deserialize)] @@ -12,28 +14,24 @@ async fn index(info: web::Json) -> impl Responder { format!("Welcome {}!", info.username) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{App, HttpServer}; - HttpServer::new(|| { + let json_config = web::JsonConfig::default() + .limit(4096) + .error_handler(|err, _req| { + // create custom error response + error::InternalError::from_response(err, HttpResponse::Conflict().finish()).into() + }); + App::new().service( web::resource("/") // change json extractor configuration - .app_data(web::Json::::configure(|cfg| { - cfg.limit(4096).error_handler(|err, _req| { - // create custom error response - error::InternalError::from_response( - err, - HttpResponse::Conflict().finish(), - ) - .into() - }) - })) + .app_data(json_config) .route(web::post().to(index)), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/extractors/src/main.rs b/examples/extractors/src/main.rs index 07f40a2..a5995d3 100644 --- a/examples/extractors/src/main.rs +++ b/examples/extractors/src/main.rs @@ -18,17 +18,18 @@ struct MyInfo { } // -async fn index( - path: web::Path<(String, String)>, - json: web::Json, -) -> impl Responder { +async fn index(path: web::Path<(String, String)>, json: web::Json) -> impl Responder { + let path = path.into_inner(); format!("{} {} {} {}", path.0, path.1, json.id, json.username) } // // async fn extract(req: HttpRequest) -> impl Responder { - let params = web::Path::<(String, String)>::extract(&req).await.unwrap(); + let params = web::Path::<(String, String)>::extract(&req) + .await + .unwrap() + .into_inner(); let info = web::Json::::extract(&req) .await @@ -38,14 +39,14 @@ async fn extract(req: HttpRequest) -> impl Responder { } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/{name}/{id}", web::post().to(index)) .route("/{name}/{id}/extract", web::post().to(extract)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/extractors/src/multiple.rs b/examples/extractors/src/multiple.rs index 76cd0e7..83bee27 100644 --- a/examples/extractors/src/multiple.rs +++ b/examples/extractors/src/multiple.rs @@ -1,5 +1,5 @@ // -use actix_web::web; +use actix_web::{get, web}; use serde::Deserialize; #[derive(Deserialize)] @@ -7,27 +7,24 @@ struct Info { username: String, } +#[get("/users/{user_id}/{friend}")] // <- define path parameters async fn index( - (path, query): (web::Path<(u32, String)>, web::Query), + web::Path((user_id, friend)): web::Path<(u32, String)>, + query: web::Query, ) -> String { format!( - "Welcome {}, friend {}, userid {}!", - query.username, path.1, path.0 + "Welcome {}, friend {}, user_id {}!", + query.username, friend, user_id ) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{App, HttpServer}; - HttpServer::new(|| { - App::new().route( - "/users/{userid}/{friend}", // <- define path parameters - web::get().to(index), - ) - }) - .bind("127.0.0.1:8088")? - .run() - .await + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? + .run() + .await } // diff --git a/examples/extractors/src/path_one.rs b/examples/extractors/src/path_one.rs index a378ba2..24edc98 100644 --- a/examples/extractors/src/path_one.rs +++ b/examples/extractors/src/path_one.rs @@ -1,25 +1,21 @@ // -use actix_web::{web, Result}; +use actix_web::{get, web, Result}; -/// extract path info from "/users/{userid}/{friend}" url -/// {userid} - - deserializes to a u32 +/// extract path info from "/users/{user_id}/{friend}" url +/// {user_id} - deserializes to a u32 /// {friend} - deserializes to a String -async fn index(info: web::Path<(u32, String)>) -> Result { - Ok(format!("Welcome {}, userid {}!", info.1, info.0)) +#[get("/users/{user_id}/{friend}")] // <- define path parameters +async fn index(web::Path((user_id, friend)): web::Path<(u32, String)>) -> Result { + Ok(format!("Welcome {}, user_id {}!", friend, user_id)) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{App, HttpServer}; - HttpServer::new(|| { - App::new().route( - "/users/{userid}/{friend}", // <- define path parameters - web::get().to(index), - ) - }) - .bind("127.0.0.1:8088")? - .run() - .await + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? + .run() + .await } // diff --git a/examples/extractors/src/path_three.rs b/examples/extractors/src/path_three.rs index 656e3d5..85819b5 100644 --- a/examples/extractors/src/path_three.rs +++ b/examples/extractors/src/path_three.rs @@ -1,26 +1,21 @@ -use actix_web::{web, HttpRequest, Result}; +use actix_web::{get, HttpRequest, Result}; // +#[get("/users/{userid}/{friend}")] // <- define path parameters async fn index(req: HttpRequest) -> Result { - let name: String = - req.match_info().get("friend").unwrap().parse().unwrap(); + let name: String = req.match_info().get("friend").unwrap().parse().unwrap(); let userid: i32 = req.match_info().query("userid").parse().unwrap(); Ok(format!("Welcome {}, userid {}!", name, userid)) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{App, HttpServer}; - HttpServer::new(|| { - App::new().route( - "/users/{userid}/{friend}", // <- define path parameters - web::get().to(index), - ) - }) - .bind("127.0.0.1:8088")? - .run() - .await + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? + .run() + .await } // diff --git a/examples/extractors/src/path_two.rs b/examples/extractors/src/path_two.rs index 764ddfe..56663f9 100644 --- a/examples/extractors/src/path_two.rs +++ b/examples/extractors/src/path_two.rs @@ -1,30 +1,29 @@ // -use actix_web::{web, Result}; +use actix_web::{get, web, Result}; use serde::Deserialize; #[derive(Deserialize)] struct Info { - userid: u32, + user_id: u32, friend: String, } /// extract path info using serde +#[get("/users/{user_id}/{friend}")] // <- define path parameters async fn index(info: web::Path) -> Result { - Ok(format!("Welcome {}, userid {}!", info.friend, info.userid)) + Ok(format!( + "Welcome {}, user_id {}!", + info.friend, info.user_id + )) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{App, HttpServer}; - HttpServer::new(|| { - App::new().route( - "/users/{userid}/{friend}", // <- define path parameters - web::get().to(index), - ) - }) - .bind("127.0.0.1:8088")? - .run() - .await + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? + .run() + .await } // diff --git a/examples/extractors/src/query.rs b/examples/extractors/src/query.rs index 23d4480..f540e80 100644 --- a/examples/extractors/src/query.rs +++ b/examples/extractors/src/query.rs @@ -1,5 +1,5 @@ // -use actix_web::web; +use actix_web::{get, web, App, HttpServer}; use serde::Deserialize; #[derive(Deserialize)] @@ -8,17 +8,16 @@ struct Info { } // this handler get called only if the request's query contains `username` field +#[get("/")] async fn index(info: web::Query) -> String { format!("Welcome {}!", info.username) } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{App, HttpServer}; - - HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/flexible-responders/Cargo.toml b/examples/flexible-responders/Cargo.toml index 8a29135..9c0e50b 100644 --- a/examples/flexible-responders/Cargo.toml +++ b/examples/flexible-responders/Cargo.toml @@ -4,6 +4,5 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" serde = "1.0" diff --git a/examples/flexible-responders/src/main.rs b/examples/flexible-responders/src/main.rs index 0237fc3..7469794 100644 --- a/examples/flexible-responders/src/main.rs +++ b/examples/flexible-responders/src/main.rs @@ -15,14 +15,14 @@ async fn current_temperature() -> impl Responder { web::Json(Measurement { temperature: 42.3 }) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .service(web::resource("/").to(hello_world)) .service(web::resource("/temp").to(current_temperature)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/getting-started/Cargo.toml b/examples/getting-started/Cargo.toml index 2f5db24..757d8bb 100644 --- a/examples/getting-started/Cargo.toml +++ b/examples/getting-started/Cargo.toml @@ -5,5 +5,4 @@ edition = "2018" workspace = "../" [dependencies] -actix-web = "2.0" -actix-rt = "1.0.0" +actix-web = "3" diff --git a/examples/getting-started/src/main.rs b/examples/getting-started/src/main.rs index 107788b..f5888fd 100644 --- a/examples/getting-started/src/main.rs +++ b/examples/getting-started/src/main.rs @@ -1,33 +1,31 @@ -// -use actix_web::{web, App, HttpResponse, HttpServer, Responder}; +// +use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder}; -async fn index() -> impl Responder { +#[get("/")] +async fn hello() -> impl Responder { HttpResponse::Ok().body("Hello world!") } -async fn index2() -> impl Responder { - HttpResponse::Ok().body("Hello world again!") +#[post("/echo")] +async fn echo(req_body: String) -> impl Responder { + HttpResponse::Ok().body(req_body) } -// -// -use actix_web::get; - -#[get("/hello")] -async fn index3() -> impl Responder { +async fn manual_hello() -> impl Responder { HttpResponse::Ok().body("Hey there!") } -// +// //
-#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() - .route("/", web::get().to(index)) - .route("/again", web::get().to(index2)) + .service(hello) + .service(echo) + .route("/hey", web::get().to(manual_hello)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/http2/Cargo.toml b/examples/http2/Cargo.toml index c9a0d58..40746c5 100644 --- a/examples/http2/Cargo.toml +++ b/examples/http2/Cargo.toml @@ -4,6 +4,5 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = { version = "2.0", features = ["openssl"] } -actix-rt = "1.0" +actix-web = { version = "3", features = ["openssl"] } openssl = { version = "0.10", features = ["v110"] } diff --git a/examples/http2/src/main.rs b/examples/http2/src/main.rs index 3dc8599..21a4397 100644 --- a/examples/http2/src/main.rs +++ b/examples/http2/src/main.rs @@ -6,7 +6,7 @@ async fn index(_req: HttpRequest) -> impl Responder { "Hello." } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { // load ssl keys // to create a self-signed temporary cert for testing: @@ -18,7 +18,7 @@ async fn main() -> std::io::Result<()> { builder.set_certificate_chain_file("cert.pem").unwrap(); HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind_openssl("127.0.0.1:8088", builder)? + .bind_openssl("127.0.0.1:8080", builder)? .run() .await } diff --git a/examples/main-example/Cargo.toml b/examples/main-example/Cargo.toml index 10e38ec..877dca1 100644 --- a/examples/main-example/Cargo.toml +++ b/examples/main-example/Cargo.toml @@ -4,5 +4,4 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" diff --git a/examples/main-example/src/main.rs b/examples/main-example/src/main.rs index 004ec57..922aec2 100644 --- a/examples/main-example/src/main.rs +++ b/examples/main-example/src/main.rs @@ -6,14 +6,14 @@ async fn greet(req: HttpRequest) -> impl Responder { format!("Hello {}!", &name) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/", web::get().to(greet)) .route("/{name}", web::get().to(greet)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/middleware/Cargo.toml b/examples/middleware/Cargo.toml index dece5a1..feb08a0 100644 --- a/examples/middleware/Cargo.toml +++ b/examples/middleware/Cargo.toml @@ -4,9 +4,8 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" -actix-service = "1.0" -actix-session = "0.3" -futures = "0.3.1" -env_logger = "0.6" +actix-web = "3" +actix-service = "1" +actix-session = "0.4" +futures = "0.3" +env_logger = "0.7" diff --git a/examples/middleware/src/default_headers.rs b/examples/middleware/src/default_headers.rs index f71377d..71d438a 100644 --- a/examples/middleware/src/default_headers.rs +++ b/examples/middleware/src/default_headers.rs @@ -1,7 +1,7 @@ // use actix_web::{http, middleware, HttpResponse}; -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; @@ -17,7 +17,7 @@ async fn main() -> std::io::Result<()> { ), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/middleware/src/errorhandler.rs b/examples/middleware/src/errorhandler.rs index aa16b28..3a510e2 100644 --- a/examples/middleware/src/errorhandler.rs +++ b/examples/middleware/src/errorhandler.rs @@ -1,3 +1,5 @@ +#![allow(dead_code)] + // use actix_web::middleware::errhandlers::{ErrorHandlerResponse, ErrorHandlers}; use actix_web::{dev, http, HttpResponse, Result}; @@ -10,7 +12,7 @@ fn render_500(mut res: dev::ServiceResponse) -> Result std::io::Result<()> { use actix_web::{web, App, HttpServer}; @@ -26,7 +28,7 @@ async fn main() -> std::io::Result<()> { .route(web::head().to(|| HttpResponse::MethodNotAllowed())), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/middleware/src/logger.rs b/examples/middleware/src/logger.rs index 5ef6228..8f70d9c 100644 --- a/examples/middleware/src/logger.rs +++ b/examples/middleware/src/logger.rs @@ -2,7 +2,7 @@ use actix_web::middleware::Logger; use env_logger::Env; -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{App, HttpServer}; @@ -13,7 +13,7 @@ async fn main() -> std::io::Result<()> { .wrap(Logger::default()) .wrap(Logger::new("%a %{User-Agent}i")) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/middleware/src/main.rs b/examples/middleware/src/main.rs index 50018cd..63b1a5e 100644 --- a/examples/middleware/src/main.rs +++ b/examples/middleware/src/main.rs @@ -74,7 +74,7 @@ where } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; @@ -86,7 +86,7 @@ async fn main() -> std::io::Result<()> { }), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/middleware/src/user_sessions.rs b/examples/middleware/src/user_sessions.rs index 261f5c2..0609b9e 100644 --- a/examples/middleware/src/user_sessions.rs +++ b/examples/middleware/src/user_sessions.rs @@ -1,3 +1,5 @@ +#![allow(dead_code)] + // use actix_session::{CookieSession, Session}; use actix_web::{web, App, Error, HttpResponse, HttpServer}; @@ -16,7 +18,7 @@ async fn index(session: Session) -> Result { ))) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() @@ -26,7 +28,7 @@ async fn main() -> std::io::Result<()> { ) .service(web::resource("/").to(index)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/middleware/src/wrap_fn.rs b/examples/middleware/src/wrap_fn.rs index a3f8f0a..c64ace6 100644 --- a/examples/middleware/src/wrap_fn.rs +++ b/examples/middleware/src/wrap_fn.rs @@ -1,9 +1,11 @@ +#![allow(dead_code, unused_variables)] + // use actix_service::Service; use actix_web::{web, App}; use futures::future::FutureExt; -#[actix_rt::main] +#[actix_web::main] async fn main() { let app = App::new() .wrap_fn(|req, srv| { diff --git a/examples/og_databases/Cargo.toml b/examples/og_databases/Cargo.toml deleted file mode 100644 index cdf2ee3..0000000 --- a/examples/og_databases/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "og_databases" -version = "0.7.0" -edition = "2018" - -[dependencies] -actix-web = "0.7" diff --git a/examples/og_databases/src/main.rs b/examples/og_databases/src/main.rs deleted file mode 100644 index de4a966..0000000 --- a/examples/og_databases/src/main.rs +++ /dev/null @@ -1,98 +0,0 @@ -// -use actix::prelude::*; - -struct DbExecutor(SqliteConnection); - -impl Actor for DbExecutor { - type Context = SyncContext; -} -// - -// -struct CreateUser { - name: String, -} - -impl Message for CreateUser { - type Result = Result; -} -// - -// -impl Handler for DbExecutor { - type Result = Result; - - fn handle(&mut self, msg: CreateUser, _: &mut Self::Context) -> Self::Result { - use self::schema::users::dsl::*; - - // Create insertion model - let uuid = format!("{}", uuid::Uuid::new_v4()); - let new_user = models::NewUser { - id: &uuid, - name: &msg.name, - }; - - // normal diesel operations - diesel::insert_into(users) - .values(&new_user) - .execute(&self.0) - .expect("Error inserting person"); - - let mut items = users - .filter(id.eq(&uuid)) - .load::(&self.0) - .expect("Error loading person"); - - Ok(items.pop().unwrap()) - } -} -// - -//
-/// This is state where we will store *DbExecutor* address. -struct State { - db: Addr, -} - -fn main() { - let sys = actix::System::new("diesel-example"); - - // Start 3 parallel db executors - let addr = SyncArbiter::start(3, || { - DbExecutor(SqliteConnection::establish("test.db").unwrap()) - }); - - // Start http server - HttpServer::new(move || { - App::new::data(State { db: addr.clone() }) - .resource("/{name}", |r| r.method(Method::GET).a(index)) - }) - .bind("127.0.0.1:8080") - .unwrap() - .start() - .unwrap(); - - println!("Started http server: 127.0.0.1:8080"); - let _ = sys.run(); -} -//
- -// -/// Async handler -fn index(req: &HttpRequest) -> Box> { - let name = &req.match_info()["name"]; - - // Send message to `DbExecutor` actor - req.state() - .db - .send(CreateUser { - name: name.to_owned(), - }) - .from_err() - .and_then(|res| match res { - Ok(user) => Ok(HttpResponse::Ok().json(user)), - Err(_) => Ok(HttpResponse::InternalServerError().into()), - }) - .responder() -} -// diff --git a/examples/powerful-extractors/Cargo.toml b/examples/powerful-extractors/Cargo.toml index 1e84b9e..8c5b0a1 100644 --- a/examples/powerful-extractors/Cargo.toml +++ b/examples/powerful-extractors/Cargo.toml @@ -4,6 +4,5 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" serde = "1.0" diff --git a/examples/powerful-extractors/src/main.rs b/examples/powerful-extractors/src/main.rs index 7005554..9fdfcdc 100644 --- a/examples/powerful-extractors/src/main.rs +++ b/examples/powerful-extractors/src/main.rs @@ -31,14 +31,14 @@ async fn index() -> HttpResponse { .body(include_str!("../static/form.html")) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/", web::get().to(index)) .route("/event", web::post().to(capture_event)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/powerful-extractors/static/form.html b/examples/powerful-extractors/static/form.html index a51229b..768f0af 100644 --- a/examples/powerful-extractors/static/form.html +++ b/examples/powerful-extractors/static/form.html @@ -18,7 +18,7 @@ } function submitJson() { - fetch('http://localhost:8088/event', { + fetch('http://localhost:8080/event', { method: 'POST', headers: { 'Accept': 'application/json', diff --git a/examples/request-handlers/Cargo.toml b/examples/request-handlers/Cargo.toml index 156950c..a0127fc 100644 --- a/examples/request-handlers/Cargo.toml +++ b/examples/request-handlers/Cargo.toml @@ -4,5 +4,4 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" diff --git a/examples/request-handlers/src/handlers_arc.rs b/examples/request-handlers/src/handlers_arc.rs index 766dd15..f7dbde8 100644 --- a/examples/request-handlers/src/handlers_arc.rs +++ b/examples/request-handlers/src/handlers_arc.rs @@ -1,5 +1,5 @@ // -use actix_web::{web, Responder}; +use actix_web::{get, web, App, HttpServer, Responder}; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Arc; @@ -8,20 +8,20 @@ struct AppState { count: Arc, } +#[get("/")] async fn show_count(data: web::Data) -> impl Responder { format!("count: {}", data.count.load(Ordering::Relaxed)) } +#[get("/add")] async fn add_one(data: web::Data) -> impl Responder { data.count.fetch_add(1, Ordering::Relaxed); format!("count: {}", data.count.load(Ordering::Relaxed)) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{App, HttpServer}; - let data = AppState { count: Arc::new(AtomicUsize::new(0)), }; @@ -29,10 +29,10 @@ async fn main() -> std::io::Result<()> { HttpServer::new(move || { App::new() .data(data.clone()) - .route("/", web::to(show_count)) - .route("/add", web::to(add_one)) + .service(show_count) + .service(add_one) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/request-handlers/src/main.rs b/examples/request-handlers/src/main.rs index 2d29c5f..d287c92 100644 --- a/examples/request-handlers/src/main.rs +++ b/examples/request-handlers/src/main.rs @@ -19,7 +19,7 @@ async fn add_one(data: web::Data) -> impl Responder { format!("count: {}", data.count.get()) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{App, HttpServer}; @@ -33,7 +33,7 @@ async fn main() -> std::io::Result<()> { .route("/", web::to(show_count)) .route("/add", web::to(add_one)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/request-routing/Cargo.toml b/examples/request-routing/Cargo.toml index df5d1d7..ba55eb9 100644 --- a/examples/request-routing/Cargo.toml +++ b/examples/request-routing/Cargo.toml @@ -4,5 +4,4 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" diff --git a/examples/request-routing/src/main.rs b/examples/request-routing/src/main.rs index 4e9694a..ef78950 100644 --- a/examples/request-routing/src/main.rs +++ b/examples/request-routing/src/main.rs @@ -9,14 +9,14 @@ async fn hello(path: web::Path) -> impl Responder { format!("Hello {}!", &path) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .service(web::resource("/").to(index)) .service(web::resource("/{name}").to(hello)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/requests/Cargo.toml b/examples/requests/Cargo.toml index 3e3a598..b609b89 100644 --- a/examples/requests/Cargo.toml +++ b/examples/requests/Cargo.toml @@ -6,8 +6,6 @@ edition = "2018" [dependencies] serde = "1.0" serde_json = "1.0" -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" futures = "0.3.1" -bytes = "0.4" -actix-multipart = "0.2" +actix-multipart = "0.3" diff --git a/examples/requests/src/json_two.rs b/examples/requests/src/json_two.rs deleted file mode 100644 index 5c0bfa8..0000000 --- a/examples/requests/src/json_two.rs +++ /dev/null @@ -1,21 +0,0 @@ -// // -// use actix_web::{error::Error, HttpRequest, HttpResponse}; -// use futures::Future; -// use serde::{Deserialize, Serialize}; - -// #[derive(Debug, Serialize, Deserialize)] -// struct MyObj { -// name: String, -// number: i32, -// } - -// pub fn index(req: HttpRequest) -> Box> { -// req.json() -// .from_err() -// .and_then(|val: MyObj| { -// println!("model: {:?}", val); -// Ok(HttpResponse::Ok().json(val)) // <- send response -// }) -// .responder() -// } -// // diff --git a/examples/requests/src/main.rs b/examples/requests/src/main.rs index c6a0c1f..cc6c724 100644 --- a/examples/requests/src/main.rs +++ b/examples/requests/src/main.rs @@ -1,4 +1,3 @@ -pub mod json_two; pub mod manual; pub mod multipart; pub mod streaming; @@ -18,10 +17,10 @@ async fn index(info: web::Json) -> Result { Ok(format!("Welcome {}!", info.username)) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| App::new().route("/", web::post().to(index))) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/requests/src/manual.rs b/examples/requests/src/manual.rs index dade24c..e7640c0 100644 --- a/examples/requests/src/manual.rs +++ b/examples/requests/src/manual.rs @@ -1,6 +1,5 @@ // -use actix_web::{error, web, App, Error, HttpResponse}; -use bytes::BytesMut; +use actix_web::{error, post, web, App, Error, HttpResponse}; use futures::StreamExt; use serde::{Deserialize, Serialize}; use serde_json; @@ -13,9 +12,10 @@ struct MyObj { const MAX_SIZE: usize = 262_144; // max payload size is 256k +#[post("/")] async fn index_manual(mut payload: web::Payload) -> Result { // payload is a stream of Bytes objects - let mut body = BytesMut::new(); + let mut body = web::BytesMut::new(); while let Some(chunk) = payload.next().await { let chunk = chunk?; // limit max size of in-memory payload @@ -31,12 +31,12 @@ async fn index_manual(mut payload: web::Payload) -> Result } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::HttpServer; - HttpServer::new(|| App::new().route("/", web::post().to(index_manual))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index_manual)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/requests/src/streaming.rs b/examples/requests/src/streaming.rs index 414d34f..eabd453 100644 --- a/examples/requests/src/streaming.rs +++ b/examples/requests/src/streaming.rs @@ -1,7 +1,8 @@ // -use actix_web::{web, Error, HttpResponse}; +use actix_web::{get, web, Error, HttpResponse}; use futures::StreamExt; +#[get("/")] async fn index(mut body: web::Payload) -> Result { let mut bytes = web::BytesMut::new(); while let Some(item) = body.next().await { @@ -14,12 +15,12 @@ async fn index(mut body: web::Payload) -> Result { } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{App, HttpServer}; - HttpServer::new(|| App::new().route("/", web::post().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/requests/src/urlencoded.rs b/examples/requests/src/urlencoded.rs index 1486308..16881c4 100644 --- a/examples/requests/src/urlencoded.rs +++ b/examples/requests/src/urlencoded.rs @@ -1,5 +1,5 @@ // -use actix_web::{web, HttpResponse}; +use actix_web::{post, web, HttpResponse}; use serde::Deserialize; #[derive(Deserialize)] @@ -7,17 +7,18 @@ struct FormData { username: String, } +#[post("/")] async fn index(form: web::Form) -> HttpResponse { HttpResponse::Ok().body(format!("username: {}", form.username)) } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{App, HttpServer}; - HttpServer::new(|| App::new().route("/", web::post().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/responder-trait/Cargo.toml b/examples/responder-trait/Cargo.toml index 46bb4bf..5582a6a 100644 --- a/examples/responder-trait/Cargo.toml +++ b/examples/responder-trait/Cargo.toml @@ -4,8 +4,7 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" futures = "0.3.1" serde = "1.0" serde_json = "1.0" diff --git a/examples/responder-trait/src/main.rs b/examples/responder-trait/src/main.rs index 972e6c2..b494ecc 100644 --- a/examples/responder-trait/src/main.rs +++ b/examples/responder-trait/src/main.rs @@ -28,12 +28,12 @@ async fn index() -> impl Responder { } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/responses/Cargo.toml b/examples/responses/Cargo.toml index c5366f6..b6e3bbd 100644 --- a/examples/responses/Cargo.toml +++ b/examples/responses/Cargo.toml @@ -4,8 +4,7 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" serde = "1.0" futures = "0.3.1" bytes = "0.5" diff --git a/examples/responses/src/auto.rs b/examples/responses/src/auto.rs index a1a1f15..99ff453 100644 --- a/examples/responses/src/auto.rs +++ b/examples/responses/src/auto.rs @@ -1,20 +1,19 @@ // -use actix_web::{http::ContentEncoding, middleware, HttpResponse}; +use actix_web::{get, http::ContentEncoding, middleware, App, HttpResponse, HttpServer}; +#[get("/")] async fn index() -> HttpResponse { HttpResponse::Ok().body("data") } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{web, App, HttpServer}; - HttpServer::new(|| { App::new() .wrap(middleware::Compress::new(ContentEncoding::Br)) - .route("/", web::get().to(index)) + .service(index) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/responses/src/brotli.rs b/examples/responses/src/brotli.rs index 2f1cab1..b420762 100644 --- a/examples/responses/src/brotli.rs +++ b/examples/responses/src/brotli.rs @@ -1,22 +1,23 @@ // -use actix_web::{http::ContentEncoding, dev::BodyEncoding, HttpResponse}; +use actix_web::{ + dev::BodyEncoding, get, http::ContentEncoding, middleware, App, HttpResponse, HttpServer, +}; +#[get("/")] async fn index_br() -> HttpResponse { HttpResponse::Ok() .encoding(ContentEncoding::Br) .body("data") } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{middleware, web, App, HttpServer}; - HttpServer::new(|| { App::new() .wrap(middleware::Compress::default()) - .route("/", web::get().to(index_br)) + .service(index_br) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/responses/src/brotli_two.rs b/examples/responses/src/brotli_two.rs index b7325f9..b827ec1 100644 --- a/examples/responses/src/brotli_two.rs +++ b/examples/responses/src/brotli_two.rs @@ -5,7 +5,7 @@ async fn index_br() -> HttpResponse { HttpResponse::Ok().body("data") } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{middleware, web, App, HttpServer}; @@ -14,7 +14,7 @@ async fn main() -> std::io::Result<()> { .wrap(middleware::Compress::new(ContentEncoding::Br)) .route("/", web::get().to(index_br)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/responses/src/chunked.rs b/examples/responses/src/chunked.rs index ac630ba..13278ba 100644 --- a/examples/responses/src/chunked.rs +++ b/examples/responses/src/chunked.rs @@ -1,20 +1,19 @@ // -use actix_web::{HttpRequest, HttpResponse, Error}; +use actix_web::{get, App, Error, HttpRequest, HttpResponse, HttpServer}; use bytes::Bytes; use futures::future::ok; use futures::stream::once; -async fn index(req: HttpRequest) -> HttpResponse { - HttpResponse::Ok() - .streaming(once(ok::<_, Error>(Bytes::from_static(b"data")))) +#[get("/")] +async fn index(_req: HttpRequest) -> HttpResponse { + HttpResponse::Ok().streaming(once(ok::<_, Error>(Bytes::from_static(b"data")))) } // -pub fn main() { - use actix_web::{web, App, HttpServer}; - - HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind("127.0.0.1:8088") +#[actix_web::main] +async fn main() { + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080") .unwrap() .run(); } diff --git a/examples/responses/src/compress.rs b/examples/responses/src/compress.rs index d98799b..1fc9293 100644 --- a/examples/responses/src/compress.rs +++ b/examples/responses/src/compress.rs @@ -1,20 +1,19 @@ // -use actix_web::{middleware, HttpResponse}; +use actix_web::{get, middleware, App, HttpResponse, HttpServer}; +#[get("/")] async fn index_br() -> HttpResponse { HttpResponse::Ok().body("data") } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{web, App, HttpServer}; - HttpServer::new(|| { App::new() .wrap(middleware::Compress::default()) - .route("/", web::get().to(index_br)) + .service(index_br) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/responses/src/identity.rs b/examples/responses/src/identity.rs index 0e8980a..f42f758 100644 --- a/examples/responses/src/identity.rs +++ b/examples/responses/src/identity.rs @@ -1,8 +1,9 @@ // use actix_web::{ - http::ContentEncoding, middleware, dev::BodyEncoding, HttpResponse, + dev::BodyEncoding, get, http::ContentEncoding, middleware, App, HttpResponse, HttpServer, }; +#[get("/")] async fn index() -> HttpResponse { HttpResponse::Ok() // v- disable compression @@ -10,16 +11,14 @@ async fn index() -> HttpResponse { .body("data") } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{web, App, HttpServer}; - HttpServer::new(|| { App::new() .wrap(middleware::Compress::default()) - .route("/", web::get().to(index)) + .service(index) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/responses/src/identity_two.rs b/examples/responses/src/identity_two.rs index 86ff64f..11ecab3 100644 --- a/examples/responses/src/identity_two.rs +++ b/examples/responses/src/identity_two.rs @@ -1,14 +1,14 @@ // use actix_web::{ - http::ContentEncoding, middleware, dev::BodyEncoding, HttpResponse, + dev::BodyEncoding, get, http::ContentEncoding, middleware, App, HttpResponse, HttpServer, }; static HELLO_WORLD: &[u8] = &[ - 0x1f, 0x8b, 0x08, 0x00, 0xa2, 0x30, 0x10, 0x5c, 0x00, 0x03, 0xcb, 0x48, 0xcd, 0xc9, - 0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0xe1, 0x02, 0x00, 0x2d, 0x3b, 0x08, 0xaf, - 0x0c, 0x00, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0xa2, 0x30, 0x10, 0x5c, 0x00, 0x03, 0xcb, 0x48, 0xcd, 0xc9, 0xc9, 0x57, + 0x28, 0xcf, 0x2f, 0xca, 0x49, 0xe1, 0x02, 0x00, 0x2d, 0x3b, 0x08, 0xaf, 0x0c, 0x00, 0x00, 0x00, ]; +#[get("/")] async fn index() -> HttpResponse { HttpResponse::Ok() .encoding(ContentEncoding::Identity) @@ -17,16 +17,14 @@ async fn index() -> HttpResponse { } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{web, App, HttpServer}; - HttpServer::new(|| { App::new() .wrap(middleware::Compress::default()) - .route("/", web::get().to(index)) + .service(index) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/responses/src/json_resp.rs b/examples/responses/src/json_resp.rs index 7df6796..b460a50 100644 --- a/examples/responses/src/json_resp.rs +++ b/examples/responses/src/json_resp.rs @@ -1,5 +1,5 @@ // -use actix_web::{web, HttpResponse, Result}; +use actix_web::{get, web, HttpResponse, Result}; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize)] @@ -7,18 +7,19 @@ struct MyObj { name: String, } +#[get("/a/{name}")] async fn index(obj: web::Path) -> Result { Ok(HttpResponse::Ok().json(MyObj { name: obj.name.to_string(), })) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{App, HttpServer}; - HttpServer::new(|| App::new().route(r"/a/{name}", web::get().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/responses/src/main.rs b/examples/responses/src/main.rs index 9ee7a55..a43754e 100644 --- a/examples/responses/src/main.rs +++ b/examples/responses/src/main.rs @@ -17,12 +17,12 @@ async fn index() -> HttpResponse { } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/server/Cargo.toml b/examples/server/Cargo.toml index c620da1..8e242df 100644 --- a/examples/server/Cargo.toml +++ b/examples/server/Cargo.toml @@ -5,8 +5,6 @@ workspace = "../" edition = "2018" [dependencies] -actix-rt = "1.0" -actix-web = { version = "2.0", features = ["openssl"] } -futures = "0.3.1" +actix-web = { version = "3", features = ["openssl"] } +futures = "0.3" openssl = "0.10" -actix-http = "1.0" diff --git a/examples/server/src/keep_alive.rs b/examples/server/src/keep_alive.rs index a59b743..8981a26 100644 --- a/examples/server/src/keep_alive.rs +++ b/examples/server/src/keep_alive.rs @@ -1,7 +1,7 @@ // use actix_web::{web, App, HttpResponse, HttpServer}; -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { let one = HttpServer::new(|| { App::new().route("/", web::get().to(|| HttpResponse::Ok())) @@ -18,6 +18,6 @@ async fn main() -> std::io::Result<()> { }) .keep_alive(None); // <- Disable keep-alive - one.bind("127.0.0.1:8088")?.run().await + one.bind("127.0.0.1:8080")?.run().await } // diff --git a/examples/server/src/keep_alive_tp.rs b/examples/server/src/keep_alive_tp.rs index 36ea2b3..003b730 100644 --- a/examples/server/src/keep_alive_tp.rs +++ b/examples/server/src/keep_alive_tp.rs @@ -8,6 +8,7 @@ async fn index(req: HttpRequest) -> HttpResponse { .finish() } // + // ConnectionType::Close // ConnectionType::KeepAlive // ConnectionType::Upgrade diff --git a/examples/server/src/main.rs b/examples/server/src/main.rs index aeb8543..24c35bc 100644 --- a/examples/server/src/main.rs +++ b/examples/server/src/main.rs @@ -7,12 +7,12 @@ pub mod workers; //
use actix_web::{web, App, HttpResponse, HttpServer}; -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new().route("/", web::get().to(|| HttpResponse::Ok())) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/server/src/signals.rs b/examples/server/src/signals.rs index ea1b1dd..8437b74 100644 --- a/examples/server/src/signals.rs +++ b/examples/server/src/signals.rs @@ -1,10 +1,9 @@ // -use actix_rt::System; -use actix_web::{web, App, HttpResponse, HttpServer}; +use actix_web::{web, App, HttpResponse, HttpServer, rt::System}; use std::sync::mpsc; use std::thread; -#[actix_rt::main] +#[actix_web::main] async fn main() { let (tx, rx) = mpsc::channel(); @@ -14,7 +13,7 @@ async fn main() { let srv = HttpServer::new(|| { App::new().route("/", web::get().to(|| HttpResponse::Ok())) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .shutdown_timeout(60) // <- Set shutdown timeout to 60 seconds .run(); diff --git a/examples/server/src/ssl.rs b/examples/server/src/ssl.rs index a21946a..f30a4bc 100644 --- a/examples/server/src/ssl.rs +++ b/examples/server/src/ssl.rs @@ -1,28 +1,28 @@ +#![allow(dead_code)] + // -use actix_web::{web, App, HttpRequest, HttpServer, Responder}; +use actix_web::{get, App, HttpRequest, HttpServer, Responder}; use openssl::ssl::{SslAcceptor, SslFiletype, SslMethod}; +#[get("/")] async fn index(_req: HttpRequest) -> impl Responder { "Welcome!" } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { // load ssl keys // to create a self-signed temporary cert for testing: // `openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365 -subj '/CN=localhost'` - let mut builder = - SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap(); + let mut builder = SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap(); builder .set_private_key_file("key.pem", SslFiletype::PEM) .unwrap(); builder.set_certificate_chain_file("cert.pem").unwrap(); - HttpServer::new(|| App::new().route("/", web::get().to(index))) - .bind_openssl("127.0.0.1:8088", builder)? + HttpServer::new(|| App::new().service(index)) + .bind_openssl("127.0.0.1:8080", builder)? .run() .await } // -// -// sssl rust-tls diff --git a/examples/server/src/workers.rs b/examples/server/src/workers.rs index d2b4649..c8d2565 100644 --- a/examples/server/src/workers.rs +++ b/examples/server/src/workers.rs @@ -1,7 +1,7 @@ // use actix_web::{web, App, HttpResponse, HttpServer}; -#[actix_rt::main] +#[actix_web::main] async fn main() { HttpServer::new(|| { App::new().route("/", web::get().to(|| HttpResponse::Ok())) diff --git a/examples/static-files/Cargo.toml b/examples/static-files/Cargo.toml index e37f205..55f3ee4 100644 --- a/examples/static-files/Cargo.toml +++ b/examples/static-files/Cargo.toml @@ -4,7 +4,6 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" -actix-files = "0.2" -mime = "*" +actix-web = "3" +actix-files = "0.3" +mime = "0.3" diff --git a/examples/static-files/src/configuration.rs b/examples/static-files/src/configuration.rs index db663d0..a3312b1 100644 --- a/examples/static-files/src/configuration.rs +++ b/examples/static-files/src/configuration.rs @@ -1,8 +1,9 @@ // use actix_files as fs; use actix_web::http::header::{ContentDisposition, DispositionType}; -use actix_web::{web, App, Error, HttpRequest, HttpServer}; +use actix_web::{get, App, Error, HttpRequest, HttpServer}; +#[get("/{filename:.*}")] async fn index(req: HttpRequest) -> Result { let path: std::path::PathBuf = req.match_info().query("filename").parse().unwrap(); let file = fs::NamedFile::open(path)?; @@ -14,10 +15,10 @@ async fn index(req: HttpRequest) -> Result { })) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - HttpServer::new(|| App::new().route("/{filename:.*}", web::get().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/static-files/src/configuration_two.rs b/examples/static-files/src/configuration_two.rs index 11b01b3..dc88ce6 100644 --- a/examples/static-files/src/configuration_two.rs +++ b/examples/static-files/src/configuration_two.rs @@ -2,7 +2,7 @@ use actix_files as fs; use actix_web::{App, HttpServer}; -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new().service( @@ -11,7 +11,7 @@ async fn main() -> std::io::Result<()> { .use_last_modified(true), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/static-files/src/directory.rs b/examples/static-files/src/directory.rs index db3131b..870e7aa 100644 --- a/examples/static-files/src/directory.rs +++ b/examples/static-files/src/directory.rs @@ -2,12 +2,12 @@ use actix_files as fs; use actix_web::{App, HttpServer}; -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new().service(fs::Files::new("/static", ".").show_files_listing()) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/static-files/src/main.rs b/examples/static-files/src/main.rs index ae903b0..66bf1f7 100644 --- a/examples/static-files/src/main.rs +++ b/examples/static-files/src/main.rs @@ -12,12 +12,12 @@ async fn index(req: HttpRequest) -> Result { Ok(NamedFile::open(path)?) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; HttpServer::new(|| App::new().route("/{filename:.*}", web::get().to(index))) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/testing/Cargo.toml b/examples/testing/Cargo.toml index bc3a0d6..7ebbe3d 100644 --- a/examples/testing/Cargo.toml +++ b/examples/testing/Cargo.toml @@ -4,10 +4,12 @@ version = "1.0.0" edition = "2018" [dependencies] -actix-web = "2.0" -actix-rt = "1.0" +actix-web = "3" futures = "0.3" futures-util = "0.3" bytes = "0.5" serde = "1.0" serde_json = "1.0" + +[dev-dependencies] +actix-rt = "1" diff --git a/examples/testing/src/stream_response.rs b/examples/testing/src/stream_response.rs index 7f608af..e81b8ed 100644 --- a/examples/testing/src/stream_response.rs +++ b/examples/testing/src/stream_response.rs @@ -35,7 +35,6 @@ pub fn main() { #[cfg(test)] mod tests { use super::*; - use actix_rt; use futures_util::stream::StreamExt; use futures_util::stream::TryStreamExt; diff --git a/examples/url-dispatch/Cargo.toml b/examples/url-dispatch/Cargo.toml index dbd9149..3640797 100644 --- a/examples/url-dispatch/Cargo.toml +++ b/examples/url-dispatch/Cargo.toml @@ -5,9 +5,8 @@ edition = "2018" workspace = "../" [dependencies] -actix = "0.9" -actix-rt = "1.0" -actix-web = "2.0" +actix = "0.10" +actix-web = "3" futures = "0.3.1" openssl = "0.10" serde = "1.0" diff --git a/examples/url-dispatch/src/cfg.rs b/examples/url-dispatch/src/cfg.rs index 21381bd..e768f0c 100644 --- a/examples/url-dispatch/src/cfg.rs +++ b/examples/url-dispatch/src/cfg.rs @@ -1,7 +1,7 @@ use actix_web::{guard, web, App, HttpResponse}; #[rustfmt::skip] -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::HttpServer; @@ -17,7 +17,7 @@ App::new().service( ) // }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/dhandler.rs b/examples/url-dispatch/src/dhandler.rs index dad5c07..7765b0a 100644 --- a/examples/url-dispatch/src/dhandler.rs +++ b/examples/url-dispatch/src/dhandler.rs @@ -1,11 +1,12 @@ use actix_web::{guard, web, App, HttpRequest, HttpResponse, HttpServer, Responder}; +#[allow(dead_code)] async fn index(_req: HttpRequest) -> impl Responder { "Welcome!" } // -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() @@ -16,7 +17,7 @@ async fn main() -> std::io::Result<()> { .to(|| HttpResponse::MethodNotAllowed()), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/guard.rs b/examples/url-dispatch/src/guard.rs index 48eddbf..405bb55 100644 --- a/examples/url-dispatch/src/guard.rs +++ b/examples/url-dispatch/src/guard.rs @@ -9,7 +9,7 @@ impl Guard for ContentTypeHeader { } } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; @@ -21,7 +21,7 @@ async fn main() -> std::io::Result<()> { .to(|| HttpResponse::Ok()), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/guard2.rs b/examples/url-dispatch/src/guard2.rs index bef0407..2b5b790 100644 --- a/examples/url-dispatch/src/guard2.rs +++ b/examples/url-dispatch/src/guard2.rs @@ -1,7 +1,7 @@ // use actix_web::{guard, web, App, HttpResponse, HttpServer}; -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new().route( @@ -11,7 +11,7 @@ async fn main() -> std::io::Result<()> { .to(|| HttpResponse::MethodNotAllowed()), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/main.rs b/examples/url-dispatch/src/main.rs index 85b61e7..0f95fea 100644 --- a/examples/url-dispatch/src/main.rs +++ b/examples/url-dispatch/src/main.rs @@ -20,14 +20,14 @@ async fn index() -> HttpResponse { HttpResponse::Ok().body("Hello") } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/", web::get().to(index)) .route("/user", web::post().to(index)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/minfo.rs b/examples/url-dispatch/src/minfo.rs index 16dc037..bd4b503 100644 --- a/examples/url-dispatch/src/minfo.rs +++ b/examples/url-dispatch/src/minfo.rs @@ -1,6 +1,7 @@ // -use actix_web::{HttpRequest, HttpResponse, Result}; +use actix_web::{get, App, HttpRequest, HttpServer, Result}; +#[get("/a/{v1}/{v2}/")] async fn index(req: HttpRequest) -> Result { let v1: u8 = req.match_info().get("v1").unwrap().parse().unwrap(); let v2: u8 = req.match_info().query("v2").parse().unwrap(); @@ -8,17 +9,11 @@ async fn index(req: HttpRequest) -> Result { Ok(format!("Values {} {} {} {}", v1, v2, v3, v4)) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{web, App, HttpServer}; - - HttpServer::new(|| { - App::new() - .route("/a/{v1}/{v2}/", web::get().to(index)) - .route("", web::get().to(|| HttpResponse::Ok())) - }) - .bind("127.0.0.1:8088")? - .run() - .await + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? + .run() + .await } // diff --git a/examples/url-dispatch/src/norm.rs b/examples/url-dispatch/src/norm.rs index 12c27aa..cc0e906 100644 --- a/examples/url-dispatch/src/norm.rs +++ b/examples/url-dispatch/src/norm.rs @@ -1,3 +1,5 @@ +#![allow(dead_code)] + // use actix_web::{middleware, HttpResponse}; @@ -5,16 +7,16 @@ async fn index() -> HttpResponse { HttpResponse::Ok().body("Hello") } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; HttpServer::new(|| { App::new() - .wrap(middleware::NormalizePath) + .wrap(middleware::NormalizePath::default()) .route("/resource/", web::to(index)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/norm2.rs b/examples/url-dispatch/src/norm2.rs index c4cc7d5..de95e8f 100644 --- a/examples/url-dispatch/src/norm2.rs +++ b/examples/url-dispatch/src/norm2.rs @@ -1,21 +1,22 @@ use actix_web::HttpResponse; +#[get("/resource/")] fn index() -> HttpResponse { HttpResponse::Ok().body("Hello") } // -use actix_web::{http::Method, middleware, web, App, HttpServer}; +use actix_web::{get, http::Method, middleware, web, App, HttpServer}; -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() - .wrap(middleware::NormalizePath) - .route("/resource/", web::get().to(index)) + .wrap(middleware::NormalizePath::default()) + .service(index) .default_service(web::route().method(Method::GET)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/path.rs b/examples/url-dispatch/src/path.rs index 81a6359..e5b280f 100644 --- a/examples/url-dispatch/src/path.rs +++ b/examples/url-dispatch/src/path.rs @@ -1,22 +1,17 @@ // -use actix_web::{web, Result}; +use actix_web::{get, web, App, HttpServer, Result}; +#[get("/{username}/{id}/index.html")] // <- define path parameters async fn index(info: web::Path<(String, u32)>) -> Result { + let info = info.into_inner(); Ok(format!("Welcome {}! id: {}", info.0, info.1)) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{App, HttpServer}; - - HttpServer::new(|| { - App::new().route( - "/{username}/{id}/index.html", // <- define path parameters - web::get().to(index), - ) - }) - .bind("127.0.0.1:8088")? - .run() - .await + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? + .run() + .await } // diff --git a/examples/url-dispatch/src/path2.rs b/examples/url-dispatch/src/path2.rs index 7cd60a4..1dcc4ff 100644 --- a/examples/url-dispatch/src/path2.rs +++ b/examples/url-dispatch/src/path2.rs @@ -1,5 +1,5 @@ // -use actix_web::{web, Result}; +use actix_web::{get, web, App, HttpServer, Result}; use serde::Deserialize; #[derive(Deserialize)] @@ -8,22 +8,16 @@ struct Info { } // extract path info using serde +#[get("/{username}/index.html")] // <- define path parameters async fn index(info: web::Path) -> Result { Ok(format!("Welcome {}!", info.username)) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{App, HttpServer}; - - HttpServer::new(|| { - App::new().route( - "/{username}/index.html", // <- define path parameters - web::get().to(index), - ) - }) - .bind("127.0.0.1:8088")? - .run() - .await + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? + .run() + .await } // diff --git a/examples/url-dispatch/src/pbuf.rs b/examples/url-dispatch/src/pbuf.rs index 5b037bd..d6fdd9c 100644 --- a/examples/url-dispatch/src/pbuf.rs +++ b/examples/url-dispatch/src/pbuf.rs @@ -1,18 +1,17 @@ // -use actix_web::{HttpRequest, Result}; +use actix_web::{get, App, HttpRequest, HttpServer, Result}; use std::path::PathBuf; +#[get("/a/{tail:.*}")] async fn index(req: HttpRequest) -> Result { let path: PathBuf = req.match_info().query("tail").parse().unwrap(); Ok(format!("Path {:?}", path)) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{web, App, HttpServer}; - - HttpServer::new(|| App::new().route(r"/a/{tail:.*}", web::get().to(index))) - .bind("127.0.0.1:8088")? + HttpServer::new(|| App::new().service(index)) + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/scope.rs b/examples/url-dispatch/src/scope.rs index ba4677e..0c60b58 100644 --- a/examples/url-dispatch/src/scope.rs +++ b/examples/url-dispatch/src/scope.rs @@ -1,24 +1,26 @@ -use actix_web::{web, App, HttpResponse, HttpServer}; +use actix_web::{get, web, App, HttpResponse, HttpServer}; // +#[get("/show")] async fn show_users() -> HttpResponse { HttpResponse::Ok().body("Show users") } +#[get("/show/{id}")] async fn user_detail(path: web::Path<(u32,)>) -> HttpResponse { - HttpResponse::Ok().body(format!("User detail: {}", path.0)) + HttpResponse::Ok().body(format!("User detail: {}", path.into_inner().0)) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new().service( web::scope("/users") - .route("/show", web::get().to(show_users)) - .route("/show/{id}", web::get().to(user_detail)), + .service(show_users) + .service(user_detail), ) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/url_ext.rs b/examples/url-dispatch/src/url_ext.rs index 0d9ec9a..7787b8e 100644 --- a/examples/url-dispatch/src/url_ext.rs +++ b/examples/url-dispatch/src/url_ext.rs @@ -1,6 +1,7 @@ // -use actix_web::{HttpRequest, Responder}; +use actix_web::{get, App, HttpRequest, HttpServer, Responder}; +#[get("/")] async fn index(req: HttpRequest) -> impl Responder { let url = req.url_for("youtube", &["oHg5SJYRHA0"]).unwrap(); assert_eq!(url.as_str(), "https://youtube.com/watch/oHg5SJYRHA0"); @@ -8,17 +9,14 @@ async fn index(req: HttpRequest) -> impl Responder { url.into_string() } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { - use actix_web::{web, App, HttpServer}; - HttpServer::new(|| { App::new() - .route("/", web::get().to(index)) + .service(index) .external_resource("youtube", "https://youtube.com/watch/{video_id}") - .route("/", actix_web::web::get().to(index)) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/url-dispatch/src/urls.rs b/examples/url-dispatch/src/urls.rs index 66ec903..e2f8857 100644 --- a/examples/url-dispatch/src/urls.rs +++ b/examples/url-dispatch/src/urls.rs @@ -1,6 +1,7 @@ // -use actix_web::{guard, http::header, HttpRequest, HttpResponse, Result}; +use actix_web::{get, guard, http::header, HttpRequest, HttpResponse, Result}; +#[get("/test/")] async fn index(req: HttpRequest) -> Result { let url = req.url_for("foo", &["1", "2", "3"])?; // <- generate url for "foo" resource @@ -9,7 +10,7 @@ async fn index(req: HttpRequest) -> Result { .finish()) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { use actix_web::{web, App, HttpServer}; @@ -21,9 +22,9 @@ async fn main() -> std::io::Result<()> { .guard(guard::Get()) .to(|| HttpResponse::Ok()), ) - .route("/test/", web::get().to(index)) + .service(index) }) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/examples/websockets/Cargo.toml b/examples/websockets/Cargo.toml index 1f58706..d24358b 100644 --- a/examples/websockets/Cargo.toml +++ b/examples/websockets/Cargo.toml @@ -4,7 +4,6 @@ version = "1.0.0" edition = "2018" [dependencies] -actix = "0.9" -actix-rt = "1.0" -actix-web = "2.0" -actix-web-actors = "2.0" +actix = "0.10" +actix-web = "3" +actix-web-actors = "3" diff --git a/examples/websockets/src/main.rs b/examples/websockets/src/main.rs index 8198d34..09381df 100644 --- a/examples/websockets/src/main.rs +++ b/examples/websockets/src/main.rs @@ -3,7 +3,7 @@ use actix::{Actor, StreamHandler}; use actix_web::{web, App, Error, HttpRequest, HttpResponse, HttpServer}; use actix_web_actors::ws; -/// Define http actor +/// Define HTTP actor struct MyWs; impl Actor for MyWs { @@ -32,10 +32,10 @@ async fn index(req: HttpRequest, stream: web::Payload) -> Result std::io::Result<()> { HttpServer::new(|| App::new().route("/ws/", web::get().to(index))) - .bind("127.0.0.1:8088")? + .bind("127.0.0.1:8080")? .run() .await } diff --git a/i18n/en.toml b/i18n/en.toml index 9fddc1f..4e200d2 100644 --- a/i18n/en.toml +++ b/i18n/en.toml @@ -1,8 +1,11 @@ [home] other = "Home" + [docs] other = "Documentation" + [community] other = "Community" + [code] other = "Code" diff --git a/layouts/docs/baseof.html b/layouts/docs/baseof.html index b6131b1..a6203da 100644 --- a/layouts/docs/baseof.html +++ b/layouts/docs/baseof.html @@ -56,7 +56,7 @@
Protocols
@@ -53,14 +53,14 @@ async fn greet(req: HttpRequest) -> impl Responder { format!("Hello {}!", &name) } -#[actix_rt::main] +#[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/", web::get().to(greet)) .route("/{name}", web::get().to(greet)) }) - .bind("127.0.0.1:8000")? + .bind("127.0.0.1:8080")? .run() .await }` "rust" "" }} @@ -135,7 +135,8 @@ async fn register(form: web::Form) -> impl Responder { URLs and invoke individual handlers. For extra flexibility, scopes can be used.

- {{ highlight `async fn index(_req: HttpRequest) -> impl Responder { + {{ highlight `#[get("/")] +async fn index(_req: HttpRequest) -> impl Responder { "Hello from the index page!" } @@ -144,8 +145,8 @@ async fn hello(path: web::Path) -> impl Responder { } let app = App::new() - .route("/", web::get().to(index)) - .route("/{name}", web::get().to(hello)); + .service(index) + .route("/{name}", web::get().to(hello)); ` "rust" "" }}
diff --git a/layouts/shortcodes/actix-web-version.html b/layouts/shortcodes/actix-web-version.html deleted file mode 100644 index 5a2a580..0000000 --- a/layouts/shortcodes/actix-web-version.html +++ /dev/null @@ -1 +0,0 @@ -0.6 diff --git a/static/css/actix.css b/static/css/actix.css index 57af572..8e0e2cf 100644 --- a/static/css/actix.css +++ b/static/css/actix.css @@ -1,23 +1,24 @@ @import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600|Roboto+Mono'); body { - font-family: 'Source Sans Pro', sans-serif; + font-family: Source Sans Pro, sans-serif; } a { - color: #156060; + color: #306ebf; } a:hover { - color: #003B3B; + color: #071540; } -table, td { - border: 1px solid black; +table, +td { + border: 1px solid black; } td { - padding: 4px; + padding: 4px; } img { @@ -40,11 +41,13 @@ img { font-size: 2.2rem; } -.actix-content h1:first-child { +.actix-content h1:first-child, +.actix-content h2:first-child { margin-top: 0; } -.actix-content h2, .actix-content h3 { +.actix-content h2, +.actix-content h3 { margin-top: 2rem; margin-bottom: 1rem; } @@ -77,7 +80,7 @@ img { } .github-edit .fa:before { - font-family: "FontAwesome"; + font-family: FontAwesome; display: inline-block; font-style: normal; font-weight: normal; @@ -90,23 +93,22 @@ img { padding-bottom: 1rem; } - /* * * ===== Navbar ===== * */ - .navbar-nav { - display: flex; - } - .navbar-nav img { - width: 100%; - } - .navbar-nav .nav-item { - margin-left: 1rem; - margin-right: 1rem; - } +.navbar-nav { + display: flex; +} +.navbar-nav img { + width: 100%; +} +.navbar-nav .nav-item { + margin-left: 1rem; + margin-right: 1rem; +} .navbar-nav .nav-link { padding-top: 0; @@ -122,7 +124,11 @@ img { height: auto; } -@keyframes spin-logo { 100% { transform: rotate(360deg); } } +@keyframes spin-logo { + 100% { + transform: rotate(360deg); + } +} .navbar-brand img { animation: spin-logo 30s linear infinite; @@ -131,14 +137,14 @@ img { } .navbar-toggle { - padding: .25rem .35rem; + padding: 0.25rem 0.35rem; font-size: 1.25rem; line-height: 1; height: 2.6rem; width: 2.8rem; background: 0 0; border: 1px solid transparent; - border-radius: .25rem; + border-radius: 0.25rem; } .navbar-light .navbar-toggle { @@ -158,7 +164,7 @@ img { width: 1.5em; height: 1.5em; vertical-align: middle; - content: ""; + content: ''; background: no-repeat center center; -webkit-background-size: 100% 100%; background-size: 100% 100%; @@ -205,7 +211,7 @@ img { margin: -1rem 0 2rem 0; display: none; } - + .leftnav { margin: 0 -1rem; padding: 0 1rem; @@ -217,19 +223,19 @@ img { .leftnav li a { color: #888; - width:100%; - height:100%; + width: 100%; + height: 100%; word-wrap: break-word; } .leftnav li.active { - margin: -0.5rem -1rem -.5rem -1rem; + margin: -0.5rem -1rem -0.5rem -1rem; padding: 0.5rem 1rem 0.5rem 1rem; - background: #dceaea; + background-color: #dfe6ee; } .leftnav li.active a { - color: #156060; + color: #163e8c; } .leftnav h5 { @@ -264,10 +270,11 @@ img { * */ -.actix-pageheader, .jumbotron { +.actix-pageheader, +.jumbotron { background-image: url(/img/jumbotron.jpg); background-size: cover; - background-color: #156060; + background-color: #071540; color: #fff; } @@ -304,14 +311,14 @@ img { } .actix-pageheader .lead { - color: #DADADA; + color: #dadada; font-size: 1.5rem; margin-bottom: 0; } .actix-pageheader #blog-title { - width:100%; - height:100%; + width: 100%; + height: 100%; word-wrap: break-word; } @@ -341,7 +348,7 @@ img { .actix-features .fa { margin-right: 0.4rem; - color: #156060; + color: #163e8c; } .actix-features p { @@ -357,7 +364,7 @@ img { margin-top: 2rem; margin-bottom: 2rem; padding: 2rem 1rem 0 1rem; - background: #dceaea; + background-color: #dfe6ee; } .actix-showcase ul { @@ -367,7 +374,7 @@ img { line-height: 2; } -.actix-showcase input[type="radio"] { +.actix-showcase input[type='radio'] { display: none; } @@ -375,41 +382,40 @@ img { display: none; } -.actix-showcase input[type="radio"]:checked + div.feature { +.actix-showcase input[type='radio']:checked + div.feature { display: block; } .actix-showcase label { display: block; font-weight: bold; - color: #156060; + color: #163e8c; cursor: pointer; } .actix-showcase label:hover { - color: #003B3B; + color: #003b3b; } .actix-feature-selectors { - padding-bottom: 2rem; - } - - .actix-feature-selector { - text-align: center; - padding: 0.5rem 1rem; - font-weight: bold; - } - - .actix-feature-selector.active { - background: white; - } - - .actix-feature-selector.active a { - color: #333!important; - text-decoration: none; - } + padding-bottom: 2rem; +} + +.actix-feature-selector { + text-align: center; + padding: 0.5rem 1rem; + font-weight: bold; +} + +.actix-feature-selector.active { + background-color: white; +} + +.actix-feature-selector.active a { + color: #333 !important; + text-decoration: none; +} - /* * * ===== Footer ===== @@ -454,10 +460,11 @@ p.uplink { */ code { - color: #006a70; + color: #163e8c; } -pre, code { +pre, +code { font-family: 'Roboto Mono', monospace; } @@ -466,7 +473,7 @@ pre { overflow-x: auto; margin: 2rem 0rem; padding: 1rem; - background: #f7f7f7; + background-color: #f7f7f7; font-size: 90%; line-height: 1.4rem; } @@ -477,73 +484,72 @@ h2:hover a:after, h3:hover a:after, h4:hover a:after, h5:hover a:after { - content: '\2002\00a7\2002'; + content: '\2002\00a7\2002'; } h2:hover a, h3:hover a, h4:hover a, h5:hover a { - text-decoration: none; + text-decoration: none; } -@media (min-width:520px) { +@media (min-width: 520px) { .jumbotron { padding: 4rem; } } - /* * * ===== Utilities ===== * */ - .d-flex { - display: flex; - } +.d-flex { + display: flex; +} - .justify-content-between { - justify-content: space-between; - } +.justify-content-between { + justify-content: space-between; +} - /* +/* * * ===== Media queries ===== * */ - @media screen and (max-width: 767px) { - .doctoggle { - display: block; - } +@media screen and (max-width: 767px) { + .doctoggle { + display: block; + } } - @media (min-width: 768px) { +@media (min-width: 768px) { .leftnav { display: block; } - .bootstrap-vertical-nav .navbar .navbar-collapse { - padding: 0; - max-height: none; - } - .bootstrap-vertical-nav .navbar ul { - float: none; - } - .bootstrap-vertical-nav .navbar ul:not { - display: block; - } - .bootstrap-vertical-nav .navbar li { - float: none; - display: block; - } + .bootstrap-vertical-nav .navbar .navbar-collapse { + padding: 0; + max-height: none; + } + .bootstrap-vertical-nav .navbar ul { + float: none; + } + .bootstrap-vertical-nav .navbar ul:not { + display: block; + } + .bootstrap-vertical-nav .navbar li { + float: none; + display: block; + } - .bootstrap-vertical-nav .navbar-nav .nav-item+.nav-item { - margin-left: 0; - } + .bootstrap-vertical-nav .navbar-nav .nav-item + .nav-item { + margin-left: 0; + } } - @media screen and (min-width: 480px) { +@media screen and (min-width: 480px) { .hidden-lg-up { display: none !important; } @@ -552,13 +558,13 @@ h5:hover a { } } - @media screen and (max-width: 479px) { +@media screen and (max-width: 479px) { .hd-lg-down { display: none !important; } .navbar-toggleable-md > .container { - padding-right: 0; - padding-left: 0; + padding-right: 0; + padding-left: 0; } .navbar-brand { @@ -605,7 +611,8 @@ h5:hover a { } @media (min-width: 480px) and (max-width: 576px) { - header .nav, #heads-up { + header .nav, + #heads-up { width: 100%; } .hd-lg-down { @@ -613,7 +620,8 @@ h5:hover a { } } @media (min-width: 576px) and (max-width: 768px) { - header .nav, #heads-up { + header .nav, + #heads-up { width: 88%; } .hd-lg-down { @@ -621,7 +629,8 @@ h5:hover a { } } @media (min-width: 768px) and (max-width: 992px) { - header .nav, #heads-up { + header .nav, + #heads-up { width: 90%; } .hd-lg-down { @@ -630,13 +639,15 @@ h5:hover a { } @media (min-width: 992px) { - header .nav, #heads-up { + header .nav, + #heads-up { width: 75%; } .hd-lg-down { width: 60%; } - .actix-pageheader .container, .container{ + .actix-pageheader .container, + .container { width: 72%; } .actix-footer-gray { @@ -644,23 +655,22 @@ h5:hover a { } } - #act-cn-tabs { padding: 2rem 2rem 1rem 2rem; margin: 2rem auto; - background:#dceaea; + background-color: #dfe6ee; } -.act-menu li{ - text-align:center; - line-height:44px; - font-size:15px; - overflow:hidden; +.act-menu li { + text-align: center; + line-height: 44px; + font-size: 15px; + overflow: hidden; } -.act-menu li.off{ +.act-menu li.off { padding: 0 1.5rem; - background:#FFFFFF; - color:#589c9e; - font-weight:bold; + background-color: #ffffff; + color: #589c9e; + font-weight: bold; } @media (min-width: 768px) { @@ -670,7 +680,7 @@ h5:hover a { padding: 2rem 1rem 1rem 2rem; } #act-cn-tabs #content { - width: 77%; + width: 77%; } } diff --git a/static/favicon.ico b/static/favicon.ico index 1eac423cca9ffaf88f2e03441bd9b40f8e69a7c2..a9fdae26d628de525958424a8b4ed3e143852461 100644 GIT binary patch literal 25214 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 D-H0 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 diff --git a/static/img/jumbotron.jpg b/static/img/jumbotron.jpg index 264fd5b08d18bb48c552a58e6e849fa4b0976a9b..efc868ab57771fd80f82f5ae8effb436ec506caa 100644 GIT binary patch literal 98037 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 PQs}4Go1`c0eu)1M0ei+B literal 245362 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%0DXM!f&A>ir_f!A#BT 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 @TrRCVB32LIMrE1{ZbJ*5Y$Qy-=zN?i3 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