在falcon Python中分离路由的正确方法是什么?

时间:2016-12-12 13:19:14

标签: python falconframework

文档中提供的示例描述了具有一条或几条路线的应用程序。每个url路径都有自己的类。对于有很多路线的情况,最佳做法是什么? 例如,我有以下RESTFul结构:

本地主机:8000 / my_part / A

本地主机:8000 / my_part / B

本地主机:8000 / my_part / A /默认

本地主机:8000 / my_part / B /特殊

等等。

我该怎么做:

  1. 为每条路径创建自己的类
  2. 为'my_part'创建单个类,并以某种方式区分该类中的A,B(例如使用剥离req.uri)
  3. 别的。
  4. 请注意,'default'和'special'不是变量,而是实际路线。

2 个答案:

答案 0 :(得分:0)

如果你有大量的URL(或者想要轻松管理),那么将它们分组并将每个URL存储在不同的文件中。

即。您可以将它们分组如下:

假设您可以将“/ my_part / A”,“/ my_part / A / default”等组合在一起,并将它们存储在“routes-a.py”中。

类似地“/ my_part / B”,“/ my_part / B / special”等等并将它们存储在“routes-b.py”中。 之后,只需在单个文件中导入所有路由并使用它。

据我所知,每个都是URL,所以每个都有单独的GET和POST请求,所以我认为你应该只使用单独的类。对于所有人来说单一类似乎是个坏主意(在这种情况下将来很难维护)。

之后只需将所有文件导入单个文件并使用它。

我还建议你只在一个单独的文件中编写该类。不要在一个文件中写入所有内容。所以稍后您可以轻松识别仅使用文件名。

让我们再举一个例子来考虑: 档案“falcon_app.py”

import falcon
app = falcon.API() 

文件“routes_a.py”并在文件“class_A.py”中存储必需的类

from class_A import *
from falcon_app import app
app.add_route("/my_part/A/", MyPartA())
app.add_route("/my_part/A/default/", MyPartADefault())

和 对于文件“routes_b.py”并在文件“class_B.py”中存储必需的类

from class_B import *
from falcon_app import app
app.add_route("/my_part/B/", MyPartB())
app.add_route("/my_part/B/special/", MyPartBSpecial())

现在,将所有单个文件合并为“routes.py”

from routes_a import *
from routes_b import *

我希望这会对你有所帮助。如果我错过了什么,请告诉我。

答案 1 :(得分:0)

将它们分组到不同的文件是迄今为止最好的方法,因为这里没有蓝图概念,就像在Flask上一样。

当然,您可以构建一个模块来处理属于同一组的所有类/资源的路由,因为所有类都将存在于相同的前缀下,例如' / api / v1'和' / api / v2'

特别是对于这种情况,需要多个API,我已经构建了一个可以同时使用烧瓶和猎鹰的轻量级框架,让您可以使用它自己的端点配置不同的api,并且让你快速起步和跑步。

您可以在此处查看:https://github.com/sebastiandev/peach