当Falcon(-Framework)无法找到特定请求的路由时,将返回404.如何覆盖此默认处理程序?我想用自定义响应扩展处理程序.
没有资源匹配时的默认处理程序是path_not_found响应者:
但正如您在falcon API 的_get_responder方法中所看到的,如果没有一些猴子修补,它就无法覆盖.
据我所知,有两种不同的方法可以使用自定义处理程序:
对API类进行子类化,并覆盖_get_responder方法,以便调用自定义处理程序
如果没有匹配任何应用程序,请使用与任何路由匹配的默认路由.您可能更喜欢使用接收器而不是路由,因此您可以使用相同的功能捕获任何HTTP方法(GET,POST ...).
我会推荐第二个选项,因为它看起来更整洁.
您的代码如下所示:
import falcon class HomeResource: def on_get(self, req, resp): resp.body = 'Hello world' def handle_404(req, resp): resp.status = falcon.HTTP_404 resp.body = 'Not found' application = falcon.API() application.add_route('/', HomeResource()) # any other route should be placed before the handle_404 one application.add_sink(handle_404, '')