2017-07-10 123 views
1

我正在嘗試爲使用aiohttp庫的python 3 asyncio程序創建一個REST API應用程序。asyncio REST API動態路由

在此程序中,我管理的對象由更多對象組成,例如管理包含許多不同產品的客戶購物車的對象,例如 。

將新對象(產品)添加到容器(購物車)時,我希望它是一個具有獨特功能的子應用程序,例如,乳製品將具有到期日期,飲料將具有酒精百分比。

的問題是,需要不同產品的不同路徑解析爲不同的子應用,例如: 如果我們的路徑格式是: /{cart_id}/{product_name}則:

/1/milk - >需要到解決到乳品分應用,而

/1/whiskey - >需要解決飲料子應用。

我還希望子應用程序有權訪問{cart_id}值。

總的來說,這些子應用程序類型只有大約3個,因此不需要非常複雜的解決方案。

我目前正在重寫aiohttp.Router類來禁止它凍結,以允許動態添加路線,但這是非常可怕的。

如果有人遇到過類似的問題,或者可以指點我一個更好的解決方案,這將是非常有益的。

回答

1

你說得對,覆蓋路由器禁用凍結是一個壞主意。

更好地做你自己的自定義路由。例如。一個接收所有請求然後決定哪個其他視圖應該處理每個請求的視圖。

請看文檔中的Custom Routing Criteria

+0

該解決方案僅適用於單一路徑,我希望爲不同類型的產品提供完整的不同路徑集合。 – roundmilf

+0

您仍然可以使用不同的路徑,只需在路由器視圖的路徑中使用[variables](http://aiohttp.readthedocs.io/en/stable/web.html#variable-resources)即可。 – SColvin

+0

謝謝!完美的作品 – roundmilf