Commit Graph
30 Commits
Author SHA1 Message Date
Tomaz Canabrava fc7e86c38d Improve typed path by disallowing deprecated variable definitions (#3618) 2026-04-03 08:49:48 +02:00
Consoli 2587f22a05 docs: Document that vpath and json macros are feature-gated (#3615) 2026-04-03 08:49:48 +02:00
Theodore BjernhedandTheodore Bjernhed 384f393857 Add #[must_use] to types and methods (#3395)
Co-authored-by: Theodore Bjernhed <[email protected]>
2025-09-28 19:19:54 +02:00
Tomaz Canabrava ee4727b865 Add macro to compile time check if a path is valid (#3288) 2025-03-27 19:54:49 +00:00
ErinandDavid Mládek 114369418d Fix TSR redirecting to top-level inside nested Router (#2993)
Co-authored-by: David Mládek <[email protected]>
2024-10-17 16:43:14 +02:00
Sabrina Jewson 822db3b1af Add MethodFilter::CONNECT (#2961) 2024-10-06 19:09:06 +00:00
David Mládek 6318b57fda chore: Upgrade matchit to 0.8 (#2645) 2024-10-03 15:46:58 +00:00
David PedersenandJonas Platte 52fd139a86 Require Sync for services (#2473)
Co-authored-by: Jonas Platte <[email protected]>
2024-09-28 23:28:44 +02:00
mikihiro c6fd852844 Update sync_wrapper to 1.0.0 from 0.1.1
... and fix CI.
2024-03-23 19:46:20 +01:00
David Pedersen 7ea7e9f618 Use IntoFuture for test RequestBuilder (#2470) 2023-12-30 18:23:53 +01:00
6703f8634c Remove B type param: Follow ups (#1789)
Co-authored-by: Jonas Platte <[email protected]>
Co-authored-by: Michael Scofield <[email protected]>
2023-04-21 17:45:31 +02:00
4e4c29175f Remove B type param (#1751)
Co-authored-by: Jonas Platte <[email protected]>
Co-authored-by: Michael Scofield <[email protected]>
2023-04-21 17:45:31 +02:00
David Pedersen 27f05ad32e Remove SpaRouter (#1784) 2023-02-25 11:05:23 +01:00
David Pedersen b4204e223d Add TypedPath::with_query_params (#1744) 2023-02-11 22:10:07 +00:00
Jonas Platte 7ecf8bd6cf Use implicit format-args captures where applicable (#1709) 2023-01-20 12:04:49 +01:00
David Pedersen 7386e5d185 Bug fixes for RouterExt:{route_with_tsr, route_service_with_tsr} (#1608)
* Bug fixes for `RouterExt:{route_with_tsr, route_service_with_tsr}`

* changelog link
2022-12-02 11:42:49 +01:00
David Pedersen b1f894a500 Fix unused import if compiling with default features 2022-11-18 00:22:11 +01:00
David Pedersen f9dc96fdce Don't internally Arc the state (#1460) 2022-10-09 20:55:28 +00:00
Jonas Platte 4ade706ab0 Add track_caller to route_with_tsr (#1390)
… and route_service_with_tsr.
2022-09-18 23:12:08 +02:00
David PedersenandJonas Platte be624306f4 Only allow last extractor to mutate the request (#1272)
* Only allow last extractor to mutate the request

* Change `FromRequest` and add `FromRequestParts` trait (#1275)

* Add `Once`/`Mut` type parameter for `FromRequest` and `RequestParts`

* 🪄

* split traits

* `FromRequest` for tuples

* Remove `BodyAlreadyExtracted`

* don't need fully qualified path

* don't export `Once` and `Mut`

* remove temp tests

* depend on axum again

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

* Port `Handler` and most extractors (#1277)

* Port `Handler` and most extractors

* Put `M` inside `Handler` impls, not trait itself

* comment out tuples for now

* fix lints

* Reorder arguments to `Handler` (#1281)

I think `Request<B>, Arc<S>` is better since its consistent with
`FromRequest` and `FromRequestParts`.

* Port most things in axum-extra (#1282)

* Port `#[derive(TypedPath)]` and `#[debug_handler]` (#1283)

* port #[derive(TypedPath)]

* wip: #[debug_handler]

* fix #[debug_handler]

* don't need itertools

* also require `Send`

* update expected error

* support fully qualified `self`

* Implement FromRequest[Parts] for tuples (#1286)

* Port docs for axum and axum-core (#1285)

* Port axum-extra (#1287)

* Port axum-extra

* Update axum-core/Cargo.toml

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

* remove `impl FromRequest for Either*`

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

* New FromRequest[Parts] trait cleanup (#1288)

* Make private module truly private again

* Simplify tuple FromRequest implementation

* Port `#[derive(FromRequest)]` (#1289)

* fix tests

* fix docs

* revert examples

* fix docs link

* fix intra docs links

* Port examples (#1291)

* Document wrapping other extractors (#1292)

* axum-extra doesn't need to depend on axum-core (#1294)

Missed this in https://github.com/tokio-rs/axum/pull/1287

* Add `FromRequest` changes to changelogs (#1293)

* Update changelog

* Remove default type for `S` in `Handler`

* Clarify which types have default types for `S`

* Apply suggestions from code review

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

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

* remove unused import

* Rename `Mut` and `Once` (#1296)

* fix trybuild expected output

Co-authored-by: Jonas Platte <[email protected]>
2022-08-22 12:23:20 +02:00
David Pedersen e7f1c88cd4 Always store state in an Arc (#1270)
* Add extension and state benchmarks

* wip

* Arc the state everywhere

* don't require `S: Clone`

* fix example
2022-08-17 20:08:24 +00:00
423308de3c Add type safe state extractor (#1155)
* begin threading the state through

* Pass state to extractors

* make state extractor work

* make sure nesting with different states work

* impl Service for MethodRouter<()>

* Fix some of axum-macro's tests

* Implement more traits for `State`

* Update examples to use `State`

* consistent naming of request body param

* swap type params

* Default the state param to ()

* fix docs references

* Docs and handler state refactoring

* docs clean ups

* more consistent naming

* when does MethodRouter implement Service?

* add missing docs

* use `Router`'s default state type param

* changelog

* don't use default type param for FromRequest and RequestParts

probably safer for library authors so you don't accidentally forget

* fix examples

* minor docs tweaks

* clarify how to convert handlers into services

* group methods in one impl block

* make sure merged `MethodRouter`s can access state

* fix docs link

* test merge with same state type

* Document how to access state from middleware

* Port cookie extractors to use state to extract keys (#1250)

* Updates ECOSYSTEM with a new sample project (#1252)

* Avoid unhelpful compiler suggestion (#1251)

* fix docs typo

* document how library authors should access state

* Add `RequestParts::with_state`

* fix example

* apply suggestions from review

* add relevant changes to axum-extra and axum-core changelogs

* Add `route_service_with_tsr`

* fix trybuild expectations

* make sure `SpaRouter` works with routers that have state

* Change order of type params on FromRequest and RequestParts

* reverse order of `RequestParts::with_state` args to match type params

* Add `FromRef` trait (#1268)

* Add `FromRef` trait

* Remove unnecessary type params

* format

* fix docs link

* format examples

* Avoid unnecessary `MethodRouter`

* apply suggestions from review

Co-authored-by: Dani Pardo <[email protected]>
Co-authored-by: Jonas Platte <[email protected]>
2022-08-17 15:13:31 +00:00
David Pedersen b243e171fd Accept S::Response: IntoResponse everywhere (#1165) 2022-07-19 18:55:15 +02:00
David PedersenandJonas Platte a4c820420d Remove trailing slash redirects (#1119)
* Prepare axum-next branch

* Remove deprecated `extractor_middleware` function (#1077)

* Allow `Error: Into<Infallible>` for `Route::{layer, route_layer}` (#948)

* Allow `Error: Into<Infallible>` for `Route::{layer, route_layer}` (#924)

* Allow `Error: Into<Infallible>` for `Route::{layer, route_layer}`

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

* changelog

* fixup changelog

* Panic on overlapping routes in `MethodRouter` (#1102)

* Panic on overlapping routes in `MethodRouter`

* changelog link

* add test to ensure `head` and `get` don't overlap

* Fix changelog

* Prepare axum-next branch

* Remove trailing slash redirects

* changelog link

* Fix changelog

* remove asserting to make make the test more clear

* remove tsr related feature

* Add `RouterExt::route_with_tsr`

* Apply suggestions from code review

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

* Update axum-extra/src/routing/mod.rs

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

* fix typos in docs

* Update axum/CHANGELOG.md

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

* mention `RouterExt::route_with_tsr` in the changelog

Co-authored-by: Jonas Platte <[email protected]>
2022-06-30 00:22:43 +02:00
David Pedersen 405e3f8c44 Add SpaRouter (#904) 2022-04-03 18:29:37 +02:00
David Pedersen d943ba6d81 Replace HasRoutes with Into<Router> (#819)
* Move `HasRoutes` into axum

* fix doc test

* Just use `Into<Router>`
2022-03-03 21:50:31 +00:00
David PedersenandJonas Platte 7a228a584b Type safe routing (#756)
* wip

* wip

* make macro implement trait

* checkpoint

* checkpoint

* Simplify things quite a bit

* re-export `axum_macros::TypedPath` from `axum_extra`

* docs

* add missing feature

* fix docs link

* fix features

* fix missing imports

* make serde an optional dep again

* ui tests

* Break things up a bit

* Update span for `FromRequest` impls to point to callsite

* make docs feature labels show up automatically

* Apply suggestions from code review

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

* add note about Display/Serialize being compatible

* Update axum-extra/src/routing/typed.rs

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

* fix missing docs link

* what about typed methods?

* Revert "what about typed methods?"

This reverts commit cc1f989467.

* don't allow wildcards for now

* percent encode params

* Update axum-extra/src/routing/typed.rs

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

* rephrase args

* changelog

Co-authored-by: Jonas Platte <[email protected]>
2022-02-18 14:13:56 +01:00
David Pedersen 515495d957 Set content-length for responses to HEAD requests (#734)
* Set `content-length` internally in `Router`

* changelog

* require `B: HttpBody` at the `impl`

* add changelog refs
2022-01-31 13:48:51 +01:00
David Pedersen ab9f1ef993 Change how Resources are added to Routers (#544) 2021-11-19 21:59:07 +01:00
David Pedersen f9a437d081 Add Resource to axum-extra (#538) 2021-11-17 22:31:43 +00:00