Commit Graph
542 Commits
Author SHA1 Message Date
a04fc42d75 Rework middleware docs (#732)
* rework middleware docs

* Apply suggestions from code review

Co-authored-by: Jonas Platte <[email protected]>

Co-authored-by: Jonas Platte <[email protected]>
2022-01-30 20:09:18 +01:00
911c4a788e Support opt-out of extra derived traits for rejections for #[derive(FromRequest)] (#729)
* Handle structs without fields

* Support opt-out of derived rejection traits

* Handle duplicate opt outs

* Improve error if opting out of `Display` or `Debug` but not `Error`

* document `rejection_derive`

* Handle using both `via` and `rejection_derive`

* don't derive debug for `RejectionDeriveOptOuts`

* Update axum-macros/src/from_request.rs

Co-authored-by: Jonas Platte <[email protected]>

Co-authored-by: Jonas Platte <[email protected]>
2022-01-28 09:54:38 +00:00
f6fc5ed80c Move axum-debug into axum-macros (#724)
* Move axum-debug into axum-macros

* fix ref to axum-macros in changelog

* Apply suggestions from code review

Co-authored-by: Jonas Platte <[email protected]>

Co-authored-by: Jonas Platte <[email protected]>
2022-01-26 23:27:22 +01:00
AlexandGitHub b1283e9708 Fix year for the 0.4.4 release (#727) 2022-01-26 08:17:39 +01:00
YuKun LiuandGitHub c0473f2b6f Expand WebSocket example to match on Message (#723) 2022-01-25 15:31:33 +00:00
FlakMandGitHub 32c9ab3c56 Add sqlx example with migrations (#722)
* Add sqlx example with migrations

Simple use case for sqlx based on tokio postgres example.
Sqlite database is created on execution in ./target directory
and migrations are then run against it.

* sqlx example uses postgres instead of sqlite3

Also removed migrations and database creation code.
2022-01-25 16:20:00 +01:00
e4c389c94d Add axum-macros crate with #[derive(FromRequest)] (#718)
* initial working impl

* support `#[from_request(via(...))]`

* support extracting the whole thing at once

* rely on type inference

* fix footgun

* fix typo

* generate rejection enums

* move tests to trybuild

* minor clean up

* docs

* Support multiple generic extractors with same "via" type

* support `Result` as well

* Update axum-macros/src/from_request.rs

Co-authored-by: Jonas Platte <[email protected]>

* Add `#[automatically_derived]`

* remove needless `#[derive(Debug)]` on macro types

* Fix error messages that different for some reason

* Update axum-macros/src/lib.rs

Co-authored-by: Jonas Platte <[email protected]>

* add more `#[automatically_derived]`

* support same types in tuple structs

* update docs

* prep axum-macros for release

* address review feedback

* Update axum-macros/src/lib.rs

Co-authored-by: Jonas Platte <[email protected]>

* Update axum-macros/src/lib.rs

Co-authored-by: Jonas Platte <[email protected]>

* Update known limitation

Co-authored-by: Jonas Platte <[email protected]>
2022-01-25 15:05:50 +01:00
David PedersenandGitHub 9004a14302 Move middleware::from_fn into axum (#719)
* Move `middleware::from_fn` into axum

* changelog

* fix feature

* Rephrase changelog a bit
2022-01-25 10:19:06 +01:00
David Pedersen 208720be53 Clarity Err usage in IntoResponseHeaders 2022-01-25 09:46:38 +01:00
David Pedersen 4f6e86f026 Fixup changelogs 2022-01-25 09:46:26 +01:00
David Pedersen e7051322d3 Make IntoResponseHeaders members hidden 2022-01-23 20:25:12 +01:00
David Pedersen 2546be04f6 Clean up docs for IntoResponseHeaders 2022-01-23 20:25:12 +01:00
David Pedersen f96111851d Remove mention of IntoResponseHeaders from axum-debug 2022-01-23 20:25:12 +01:00
David Pedersen d4849820ce Move Headers into axum 2022-01-23 20:25:12 +01:00
Jonas PlatteandDavid Pedersen bf83f34617 Add trait IntoResponseHeaders (#649)
* Introduce IntoResponseHeaders trait

* Implement IntoResponseHeaders for HeaderMap

* Add impl IntoResponse for impl IntoResponseHeaders

… and update IntoResponse impls that use HeaderMap to be generic instead.

* Add impl IntoResponseHeaders for Headers

… and remove IntoResponse impls that use it.

* axum-debug: Fix grammar in docs

* Explain confusing error message in docs
2022-01-23 18:01:52 +01:00
David PedersenandJonas Platte b1ef0be1a7 Remove RequestParts::take_extensions (#699)
* Remove `RequestParts::take_extensions`

* fix out of date docs

* Remove RequestAlreadyExtracted and replace it with BodyAlreadyExtracted

* fix docs

* fix test

* Update axum-core/src/extract/mod.rs

Co-authored-by: Jonas Platte <[email protected]>

* Remove macro only used once

Co-authored-by: Jonas Platte <[email protected]>
2022-01-23 18:01:52 +01:00
David Pedersen 184ea656c0 Change HeaderMap extractor to clone the headers (#698)
* Change `HeaderMap` extractor to clone the headers

* fix docs

* changelog

* inline variable

* also add changelog item to axum

* don't list types from axum in axum-core's changelog

* document that `HeaderMap::from_request` clones the headers

* fix typo

* a few more typos
2022-01-23 18:01:52 +01:00
Sabrina JewsonandDavid Pedersen d5694f0d0d Make sse::Event build event as a BytesMut (#647)
Co-authored-by: David Pedersen <[email protected]>
2022-01-23 18:01:52 +01:00
Jonas PlatteandDavid Pedersen e0a463b463 Optional extractor extensions (#685)
* Fix inconsistent indentation in axum/Cargo.toml

* Make MatchedPath and OriginalUri extractors and logic for them optional

… they add some runtime cost to handling any request that goes through
a Router, which only makes sense if they actually get used.

Enable both features by default for convenience.
2022-01-23 18:01:52 +01:00
David Pedersen d97f2aeae6 Make TypedHeaderRejectionReason #[non_exhaustive] (#665)
* Make `TypedHeaderRejectionReason` `#[non_exhaustive]`

Fixes https://github.com/tokio-rs/axum/issues/660

* add changelog pr link
2022-01-23 18:01:52 +01:00
David Pedersen 5d79c638f4 Require Output = () on WebSocketStream::on_upgrade (#646)
Fixes https://github.com/tokio-rs/axum/issues/636
2022-01-23 18:01:52 +01:00
NyloniciousandDavid Pedersen 455fc46bf3 Change error type for RequestParts::try_into_request (#639) 2022-01-23 18:01:52 +01:00
Nick AshleyandDavid Pedersen 9b4232b786 Replace public use of mime crate with &str (#642)
Replaces `Field::content_type`'s return type with `&str`.
This is a breaking change.

Closes #637
2022-01-23 18:01:52 +01:00
LaineraandGitHub 4df4e07e10 add axum-msgpack crate to ECOSYSTEM.md (#716) 2022-01-22 10:13:53 +01:00
David PedersenandGitHub 830bfdbe3c Change TestClient to not follow redirects (#715)
Makes it more obvious what actually goes on
2022-01-21 17:32:12 +01:00
Aaron ErhardtandGitHub 50f42d8071 Fix path route in extractor docs (#711) 2022-01-18 13:22:54 +00:00
David PedersenandGitHub 5ffab810c0 Update to changed compiler error in 1.58 (#708)
The trybuild tests needed to be updated for 1.58. We only run the tests
on stable (but build on other toolchains).
2022-01-14 09:32:34 +01:00
David PedersenandGitHub 6d01f3968e axum-extra: Version 0.1.2 (#705)
- **fix:** Depend on tower with `default_features = false` ([#666])

[#666]: https://github.com/tokio-rs/axum/pull/666
axum-extra-v0.1.2
2022-01-13 10:37:56 +01:00
David PedersenandGitHub 5fe981a1da axum: Version 0.4.4 (#706)
- **fixed:** Fix using incorrect path prefix when nesting `Router`s at `/` ([#691])
- **fixed:** Make `nest("", service)` work and mean the same as `nest("/", service)` ([#691])
- **fixed:** Replace response code `301` with `308` for trailing slash redirects. Also deprecates
  `Redirect::found` (`302`) in favor of `Redirect::temporary` (`307`) or `Redirect::to` (`303`).
  This is to prevent clients from changing non-`GET` requests to `GET` requests ([#682])

[#691]: https://github.com/tokio-rs/axum/pull/691
[#682]: https://github.com/tokio-rs/axum/pull/682
axum-v0.4.4
2022-01-13 10:37:33 +01:00
Nick AshleyandGitHub 007a0e85f2 Use 308 instead of 301 for trailing slash redirects (#682)
* Use 308 status instead of 301 when redirecting

For redirects resulting from requests to paths with a trailing slash,
use 308 instead of 301 to prevent non-GET requests (POST, PUT, etc) from
being changed to GET.

For example, (assuming a route for /path is defined)...
  - Old behavior results in:
  POST /path/ -> GET /path

  - New behavior results in:
  POST /path/ -> POST /path

Fixes #681

* Add deprecation notice to found()

Deprecates found() due to its use of HTTP 302

* rustfmt

* Use dedicated redirect method

Use Redirect::permanent instead of re-implementing its functionality

* Remove deprecated method from example

Replace usages of Redirect:found with Redirect::to and Redirect::temporary as appropriate

* Fix panic in oauth example

Previously the example would panic if a request was made without the
`Cookie` header. Now the user is redirected to the login page as
expected.

* Update CHANGELOG

* Revert pub TypedheaderRejection fields

* Fix clippy lint

* cargo fmt

* Fix CHANGELOG link

* Adhere to implicit line length limit
2022-01-12 15:14:06 +01:00
Dr. David A. KunzandGitHub 5512ebcd23 chore: Fix typo in middleware.md (#700) 2022-01-11 22:56:33 +00:00
David PedersenandGitHub d181867355 Fix nesting Router at / leading to double slash in the path (#691)
* Fix nesting router at `/`

Fixes https://github.com/tokio-rs/axum/issues/690

* Allow nesting at `""`

* changelog

* remove outdated test
2022-01-06 12:12:24 +01:00
d6ce99190b Document extracting OriginalUri directly via request extensions (#688)
* Document extracting `OriginalUri` directly via request extensions

Fixes https://github.com/tokio-rs/axum/issues/684

* fix example

* Update axum/src/extract/request_parts.rs

Co-authored-by: Jonas Platte <[email protected]>

Co-authored-by: Jonas Platte <[email protected]>
2022-01-06 10:35:11 +00:00
David PedersenandGitHub 6d24a8695f Add SSE tests (#652)
* Add SSE tests

* Simplify keep alive test a bit

* More robust keep-alive tests

* rename a bit
2022-01-03 18:48:50 +01:00
David PedersenandGitHub 86331613f4 Add some debug assertions (#686)
* Add some debug assertions

As discussed in Discord its probably worth having debug assertions for
these two cases, should we accidentally break them in the future.

* remove assertion in `OriginalUri`
2022-01-03 15:32:35 +00:00
David PedersenandGitHub 8cd9c478fe Document passing state to handlers via closure captures (#683) 2022-01-03 15:37:40 +01:00
PatrickandGitHub e0082a3f87 Fix the link to "Routing to services and backpressure" (#680)
In `Router::route`, the link to the "Routing to services and
backpressure" section on the crate documentation page directed to
<https://docs.rs/#routing-to-services-and-backpressure>. This change
makes it direct to the main crate documentation page.
2021-12-31 22:32:55 +01:00
NyloniciousandGitHub 8411b78736 Document calling extractors in FromRequest impl (#679)
* Document calling extractors in FromRequest impl

* Fix typo

* Apply suggested changes
2021-12-31 16:16:33 +01:00
David Pedersen 044d35d193 Link to another benchmark 2021-12-29 23:03:01 +01:00
lz1998andGitHub 15e03a4e6b ecosystem: Add book management (#675) 2021-12-29 20:12:50 +01:00
Jonas PlatteandGitHub 616a43aaa3 Simplify graceful shutdown (#673) 2021-12-28 16:23:07 +01:00
David PedersenandGitHub 5698fb8be9 Add metrics example (#671) 2021-12-28 15:58:48 +01:00
Sabrina JewsonandGitHub 031e0fd472 Store Bytes in ErasedJson (#672) 2021-12-28 10:41:21 +00:00
Guy LapidandGitHub d602682821 Add support for returning pretty JSON response in axum_extra::response::ErasedJson (#662) 2021-12-28 09:19:24 +00:00
David PedersenandGitHub 4fd7e927ba Document how to pass state to middleware::from_fn (#669) 2021-12-27 23:53:50 +01:00
David PedersenandGitHub 1020d0144b Improve middleware examples using auth (#668)
* Make `middleware::from_fn` examples less secure

* Also improve `extractor_middleware` example
2021-12-27 23:34:37 +01:00
David PedersenandGitHub 9d62b5c060 Mention middleware::from_fn in axum’s docs (#670)
Fixes https://github.com/tokio-rs/axum/issues/667
2021-12-27 23:30:08 +01:00
David PedersenandGitHub de37a3e737 Tweak tower dependency in axum-extra (#666)
Fixes https://github.com/tokio-rs/axum/issues/659
2021-12-27 23:28:58 +01:00
Jonas PlatteandGitHub a3e19465ac Move header name validity checks to compile time (#661) 2021-12-27 18:25:47 +01:00
Sabrina JewsonandGitHub 7df611319e Fix axum-extra's optional feature documentation (#663) 2021-12-27 18:12:46 +01:00