You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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):
falcon.routing.util.SuffixedMethodNotFoundError: No responders found for the specified suffix
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:
import falcon
class NoneResource:
pass
app = falcon.App()
app.add_route('/res3', NoneResource())
# the next route crashes...
# app.add_route('/res4', NoneResource(), suffix='collection')
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...
The text was updated successfully, but these errors were encountered:
Hi @Sirtea!
I agree it is a somewhat inconsistent behaviour...
However, not sure if we should allow adding empty resources at all? 🤔 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 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...The text was updated successfully, but these errors were encountered: