Lightweight web framework - Axum or Warp

Does anyone have experience with both of these frameworks?

I'm looking for a lightweight framework that supports websockets and these both look very similar. I was looking for insight into differences between them. I see that Axum uses Tower for middleware, but I'm not sure what the story for middleware is when using Warp.

Thanks

I'm the creator of axum so take this for what you will, but there are two main reasons for creating for axum in the first place:

  1. Warp's Filter system is very powerful and technically cool, but for someone who's not familiar with functional programming it can feel foreign. So with axum I wanted something that would be familiar to most users, ergonomic and easy to use, and free of macros to have less magic, faster compile times, and IDE support.
  2. I also maintain tower and tower-http and I wanted a framework that had deep integration with that ecosystem. So every endpoint and router is a tower::Service and you can add tower::Service based middleware everywhere. This leads to a lot of flexibility in how you run axum. While warp does support converting a Filter into a Service you can't use tower middleware quite to the extend you can with axum and I would often have to re-create a middleware from tower-http using warp's Filter.

Really I would encourage you to give both a try and see which you like the most. Both have a "todo list" example which you can use to compare axum and warp.

3 Likes

I do have that familiarity but to me it still felt obtuse.

I just did a scan of the landscape and ended up at axum. The only other contender from a feel/style perspective was tide which I didn’t pick because of the async-std base (felt like an odd one out).

Thanks for the feedback.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.