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

1 Like

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.

7 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.