gpt4 book ai didi

python - 当没有路由匹配时覆盖 Falcon 的默认错误处理程序

转载 作者:太空狗 更新时间:2023-10-30 00:02:12 24 4
gpt4 key购买 nike

当 Falcon(-Framework) 找不到特定请求的路由时,返回 404。如何覆盖此默认处理程序?我想用自定义响应扩展处理程序。

最佳答案

没有资源匹配时的默认处理程序是 path_not_found回复者:

但正如您在 _get_responder 中看到的那样falcon API 的方法,如果不进行一些猴子修补,就无法覆盖它。

据我所知,有两种不同的方式来使用自定义处理程序:

  1. 子类化 API 类,并覆盖 _get_responder 方法,以便它调用您的自定义处理程序
  2. 如果没有匹配的应用程序,则使用匹配任何路由的默认路由。您可能更喜欢使用 sink而不是路由,因此您可以捕获具有相同功能的任何 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, '')

关于python - 当没有路由匹配时覆盖 Falcon 的默认错误处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34386096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com