Initially posted on Clojurians, I realized the discussion might become larger, so I moved it here.
What would be a good recommendation for a routing library in 2023? I need to propose a few options to my team.
The criteria are as follows:
- Relatively simple OpenAPI integration
- There’s no tightly coupled front-end (no Clojurescript); it’s backend-only
- And no GraphQL either; only REST
Personally, I favor Reitit, but some team members have experienced issues with it in the past, primarily due to the complexities of Malli coercion mechanics. Their arguments can be summarized as follows:
- Reitit has excessive functionality that promotes feature creep.
While I somewhat agree with this, Reitit can initially seem challenging to comprehend, but this is typically only in the beginning.
- Metosin is unresponsive when it comes to addressing defects, making it difficult to manage them without forking the project.
Since I’ve never used Reitit extensively to the point of encountering unusual bugs, I can’t provide a comment on this.
- Malli works well for CRUD websites but does not offer many robust features for more complex applications.
Again, I have never used Malli personally, so I can’t say anything about this. I’m also unsure if we’ll need type coercion at all – be that with Malli, Schema, or Spec, particularly in the early stages of the project.
While the team is not entirely against using Reitit, they would appreciate hearing convincing reasons. If I can’t persuade them to opt for Reitit, what other possible choices exist at present?
I have a prejudice against Compojure. Correct me if I’m wrong, but it appears that once you start using Compojure, you tend to want to extend it with CompojureAPI, which I’m not fond of. But at that point, why not simply use Reitit? Is that a fair assumption?
What about juxt/bidi? Perhaps rather than trying to convince everyone to go for Reitit, which may be regarded as an overkill for our relatively simple, non-complex app, maybe choosing bidi would make everyone happy?