Open Sirtea opened 1 year ago
Hi @Sirtea! I agree it is a somewhat inconsistent behaviour...
However, not sure if we should allow adding empty resources at all? :thinking: HTTP 405 means that a method is not allowed, and the server should return a list of allowed methods, but in this case there are none?
In the rare event that I disable all "collection" methods, it makes no sense to have the add_route(..., suffix='collection')
statement. Same could be said in the event of disabling all the "normal" methods. Probably is a bug not worth looking at, but I just wanted you to know.
And to be correct, any resource with no responders should be giving a 404 instead of a 405 on all HTTP verbs... Again, it's a weird usage of the resources from a developers perspective, but his own fault.
I'm more inclined to think that the behaviour done when suffix is specified, ie the raise, is more correct.
I agree with @CaselIT, I think we should model the behaviour after the current one for suffixed resources.
I'm developing a generic resource with all the API operations (GET/POST collection, GET/PUT/PATCH/DELETE element). The idea is to reuse this component by passing a DAO object to make it truly generic. The idea is that all the methods should be disabled by some resources, and I did this with this kind of code (minimal reproduction):
As I start gunicorn server, my app crashes:
At this point, the resource "res2" is useless because it has no methods, I know... but this happens when I disable all "collection" methods. If I remove the
suffix='collection'
I only get 405s on every request, like this:The issue is easy to bypass by removing the "collection" add_route, but I still think that both routes
/res3
(normal route) and/res4
(suffixed route) should behave the same way, with no methods available...