【问题标题】:asyncio REST API dynamic routingasyncio REST API 动态路由
【发布时间】:2017-07-10 10:25:39
【问题描述】:

我正在尝试使用 aiohttp 库为 python 3 asyncio 程序创建一个 REST API 应用程序。

在这个程序中,我正在管理由更多对象组成的对象, 例如管理包含许多不同产品的客户购物车。

将新对象(产品)添加到容器(购物车)时, 我希望它是一个具有独特功能的子应用程序,例如,乳制品将具有有效期,饮料将具有酒精百分比。

问题是不同产品的不同路径需要解析到不同的子应用,例如: 如果我们的路径格式是: /{cart_id}/{product_name} 然后:

/1/milk --> 需要解析到Dairy子应用,而

/1/whiskey --> 需要解析到饮料子应用。

我还希望子应用程序能够访问 {cart_id} 值。

这些子应用程序类型总共只有大约 3 种,因此不需要非常复杂的解决方案。

我目前正计划重写 aiohttp.Router 类以禁止它冻结以允许动态添加路由, 但这太可怕了。

如果有人遇到过类似的问题或能指出更好的解决方案,那将非常有帮助。

【问题讨论】:

    标签: python-3.x rest routes python-asyncio aiohttp


    【解决方案1】:

    您说得对,重写路由器以禁用冻结是一个坏主意。

    最好进行自己的自定义路由。例如。一个视图,它接收所有请求,然后决定哪个其他视图应该处理每个请求。

    查看文档中的Custom Routing Criteria

    【讨论】:

    • 此解决方案仅适用于单一路径,我希望有一些东西可以为不同类型的产品提供完全不同的路径集。
    • 您仍然可以使用不同的路径来执行此操作,只需在路由器视图的路径中使用variables
    猜你喜欢
    • 1970-01-01
    • 2011-08-05
    • 2020-01-27
    • 2017-01-21
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    相关资源
    最近更新 更多