tokio-rs / axum

Ergonomic and modular web framework built with Tokio, Tower, and Hyper
19.18k stars 1.06k forks source link

Move axum-extra's `Multipart` into axum? #1952

Open davidpdrsn opened 1 year ago

davidpdrsn commented 1 year ago

axum extra has its own Multipart type which does some borrow checking at runtime, making it possible to implement common and safe use cases. See https://github.com/tokio-rs/axum/pull/1692 for more context.

For 0.7 we should consider if we should promote that to axum.

mo8it commented 1 year ago

Any plans on providing something like typed-multipart?

davidpdrsn commented 1 year ago

That crate seems to already provide it. I have no plans of adding that to axum itself.

rakshith-ravi commented 1 year ago

@davidpdrsn is there a reason you're considering to move it into axum? Having it in axum-extra seems fine.

On the flip side, having it in axum would certainly increase the amount of features we provide out of the box, making axum more "batteries-included" (at least more than before). That being said, if you are moving it into core axum, I'd strongly urge you to feature gate it so that it doesn't affect compile times.

davidpdrsn commented 1 year ago

axum has less breaking releases than axum-extra so it more about maturity and long term stability.

I still think it’s appropriate for axum to provide a multipart extractor.

rakshith-ravi commented 1 year ago

Ahh, got it. We could perhaps put out some sort of a "community feedback wanted" thingy where we understand how many people use the multipart extractor in production (I personally don't so I'm not able to give enough feedback) and if they face any issues, both in terms of bugs as well as DX. If what's currently there seems good, then we know that we have something that's good to go and wouldn't break a lot, and can move it into axum I suppose. Thoughts?

jplatte commented 1 month ago

I haven't seen a lot of demand for this and personally I like the compile-time safety of the current multipart implementation in axum, so I'll remove this from the 0.8 milestone.