1
0
Fork 0
mirror of https://github.com/tokio-rs/axum.git synced 2025-03-17 04:39:58 +01:00
Commit graph

932 commits

Author SHA1 Message Date
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 Platte
bf83f34617 Add trait IntoResponseHeaders ()
* 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 Pedersen
b1ef0be1a7 Remove RequestParts::take_extensions ()
* 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 <jplatte@users.noreply.github.com>

* Remove macro only used once

Co-authored-by: Jonas Platte <jplatte@users.noreply.github.com>
2022-01-23 18:01:52 +01:00
David Pedersen
184ea656c0 Change HeaderMap extractor to clone the headers ()
* 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 Jewson
d5694f0d0d Make sse::Event build event as a BytesMut ()
Co-authored-by: David Pedersen <david.pdrsn@gmail.com>
2022-01-23 18:01:52 +01:00
Jonas Platte
e0a463b463 Optional extractor extensions ()
* 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] ()
* 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 ()
Fixes https://github.com/tokio-rs/axum/issues/636
2022-01-23 18:01:52 +01:00
Nylonicious
455fc46bf3 Change error type for RequestParts::try_into_request () 2022-01-23 18:01:52 +01:00
Nick Ashley
9b4232b786 Replace public use of mime crate with &str ()
Replaces `Field::content_type`'s return type with `&str`.
This is a breaking change.

Closes 
2022-01-23 18:01:52 +01:00
Lainera
4df4e07e10
add axum-msgpack crate to ECOSYSTEM.md () 2022-01-22 10:13:53 +01:00
David Pedersen
830bfdbe3c
Change TestClient to not follow redirects ()
Makes it more obvious what actually goes on
2022-01-21 17:32:12 +01:00
Aaron Erhardt
50f42d8071
Fix path route in extractor docs () 2022-01-18 13:22:54 +00:00
David Pedersen
5ffab810c0
Update to changed compiler error in 1.58 ()
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 Pedersen
6d01f3968e
axum-extra: Version 0.1.2 ()
- **fix:** Depend on tower with `default_features = false` ([])

[]: https://github.com/tokio-rs/axum/pull/666
2022-01-13 10:37:56 +01:00
David Pedersen
5fe981a1da
axum: Version 0.4.4 ()
- **fixed:** Fix using incorrect path prefix when nesting `Router`s at `/` ([])
- **fixed:** Make `nest("", service)` work and mean the same as `nest("/", service)` ([])
- **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 ([])

[]: https://github.com/tokio-rs/axum/pull/691
[]: https://github.com/tokio-rs/axum/pull/682
2022-01-13 10:37:33 +01:00
Nick Ashley
007a0e85f2
Use 308 instead of 301 for trailing slash redirects ()
* 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 

* 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. Kunz
5512ebcd23
chore: Fix typo in middleware.md () 2022-01-11 22:56:33 +00:00
David Pedersen
d181867355
Fix nesting Router at / leading to double slash in the path ()
* 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
David Pedersen
d6ce99190b
Document extracting OriginalUri directly via request extensions ()
* 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 <jplatte@users.noreply.github.com>

Co-authored-by: Jonas Platte <jplatte@users.noreply.github.com>
2022-01-06 10:35:11 +00:00
David Pedersen
6d24a8695f
Add SSE tests ()
* 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 Pedersen
86331613f4
Add some debug assertions ()
* 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 Pedersen
8cd9c478fe
Document passing state to handlers via closure captures () 2022-01-03 15:37:40 +01:00
Patrick
e0082a3f87
Fix the link to "Routing to services and backpressure" ()
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
Nylonicious
8411b78736
Document calling extractors in FromRequest impl ()
* 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
lz1998
15e03a4e6b
ecosystem: Add book management () 2021-12-29 20:12:50 +01:00
Jonas Platte
616a43aaa3
Simplify graceful shutdown () 2021-12-28 16:23:07 +01:00
David Pedersen
5698fb8be9
Add metrics example () 2021-12-28 15:58:48 +01:00
Sabrina Jewson
031e0fd472
Store Bytes in ErasedJson () 2021-12-28 10:41:21 +00:00
Guy Lapid
d602682821
Add support for returning pretty JSON response in axum_extra::response::ErasedJson () 2021-12-28 09:19:24 +00:00
David Pedersen
4fd7e927ba
Document how to pass state to middleware::from_fn () 2021-12-27 23:53:50 +01:00
David Pedersen
1020d0144b
Improve middleware examples using auth ()
* Make `middleware::from_fn` examples less secure

* Also improve `extractor_middleware` example
2021-12-27 23:34:37 +01:00
David Pedersen
9d62b5c060
Mention middleware::from_fn in axum’s docs ()
Fixes https://github.com/tokio-rs/axum/issues/667
2021-12-27 23:30:08 +01:00
David Pedersen
de37a3e737
Tweak tower dependency in axum-extra ()
Fixes https://github.com/tokio-rs/axum/issues/659
2021-12-27 23:28:58 +01:00
Jonas Platte
a3e19465ac
Move header name validity checks to compile time () 2021-12-27 18:25:47 +01:00
Sabrina Jewson
7df611319e
Fix axum-extra's optional feature documentation () 2021-12-27 18:12:46 +01:00
David Pedersen
9f5f29dfba
axum-extra: Version 0.1.1 ()
- Add `middleware::from_fn` for creating middleware from async functions ([])

[]: https://github.com/tokio-rs/axum/pull/656
2021-12-27 15:23:02 +01:00
Jonas Platte
0a399ed0fa
A few small refactorings ()
* Simplify json content-type check

* Import HeaderMap from http instead of from headers

The headers crate is an optional dependency and its HeaderMap re-export
is `#[doc(hidden)]`.

* Use headers re-export in axum in examples
2021-12-27 14:02:38 +01:00
David Pedersen
f4716084a7
Add middleware::from_fn for creating middleware from async fns ()
* Add `middleware::from_fn` for creating middleware from async fns

* More trait impls for `Next`

* Make `Next::run` consume `self`

* Use `.router_layer` in example, since middleware returns early

* Actually `Next` probably shouldn't impl `Clone` and `Service`

Has implications for backpressure and stuff

* Simplify `print-request-response` example

* Address review feedback

* add changelog link
2021-12-27 14:01:26 +01:00
ttys3
3841ef44d5
Fix session cookie example ()
* refactor: refine session cookie example

* refactor: refine session_cookie extraction

* refactor: avoid to_owned()

* chore: refine debug log

Co-authored-by: 荒野無燈 <ttys3.rust@gmail.com>
2021-12-22 15:27:13 +01:00
David Pedersen
4c48efc861
axum: Version 0.4.3 () 2021-12-21 15:41:03 +01:00
Jonas Platte
ce6ad399ef
Fix a typo () 2021-12-17 13:15:07 +01:00
Jonas Platte
f7049054bf
Re-export the headers crate when the headers feature is active () 2021-12-15 15:14:03 +01:00
lz1998
dea36db400
Use HttpBody type alias internally ()
* use 'crate::body::HttpBody' instead of 'http_body::Body'

* use 'crate::body::Bytes' instead of 'bytes::Bytes'

* rustfmt

* fix warning

* Update axum/src/routing/method_routing.rs

Co-authored-by: David Pedersen <david.pdrsn@gmail.com>

* Update axum/src/routing/method_routing.rs

Co-authored-by: David Pedersen <david.pdrsn@gmail.com>

Co-authored-by: David Pedersen <david.pdrsn@gmail.com>
2021-12-14 12:58:45 +01:00
David Pedersen
4625e1953b
Allow duplicate itoa dependency ()
Once the community has updated to itoa 1.0 we can remove this.
2021-12-14 11:56:16 +01:00
David Pedersen
ba42783df2
Example for defining routes and handlers close together () 2021-12-12 23:54:18 +01:00