gpt4 book ai didi

python - 基于 Python Web 框架中的 Accept header 路由请求

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:20 25 4
gpt4 key购买 nike

我对不同的 Web 框架(Django、web.py、Pyramid 和 CherryPy)有一些经验,我想知道在哪个框架中将路由调度程序实现到不同的“ View /处理程序”会更容易、更清晰“基于“接受” header 和 HTTP 方法,例如:

Accept: application/json
POST /post/

处理方式不同于:

Accept: text/html
POST /post/

因此请求被路由到 MIME“application/json”和 HTTP 方法“POST”的相应处理程序的特定 View 。

我确实知道如何在 CherryPy 中实现类似的功能,但我无法使用 CherryPy 工具对请求进行内部重定向,因为我是直接调用特定方法,而不是从调度程序自动调用。另一种选择是从头开始实现全新的调度程序,但这是最后的选择。

我知道在 url 中使用扩展名的替代方法,例如 /post.json/post/.json,但我希望保留相同的网址?

最佳答案

如果您正在寻找的是一个可以轻松做到这一点的框架,那么使用pyramid .

Pyramid View 定义是用 predicates 制作的,不仅仅是路由,而且 View 只有在所有谓词都匹配时才匹配。一个这样的谓词是 accept 谓词,它做的正是你想要的;根据 Accept header 轻松切换 View :

from pyramid.view import view_config

@view_config(route_name='some_api_name', request_method='POST', accept='application/json')
def handle_someapi_json(request):
# return JSON

@view_config(route_name='some_api_name', request_method='POST', accept='text/html')
def handle_someapi_html(request):
# return HTML

关于python - 基于 Python Web 框架中的 Accept header 路由请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13998607/

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