2016-12-12 10 views
0

Примеры, представленные в документации, описывают приложения с одним или несколькими маршрутами. Каждый URL-адрес имеет собственный класс. Какова наилучшая практика для ситуации с множеством маршрутов? Например, я следующие успокоительные структуру:Каков правильный способ разделения маршрутов в falcon Python?

LocalHost: 8000/my_part/A

LocalHost: 8000/my_part/B

LocalHost: 8000/my_part/A/по умолчанию

Localhost : 8000/my_part/B/special

и так далее.

Что я должен делать:

  1. Для каждого пути создания его собственный класс
  2. Создать отдельный класс для «my_part» и каким-то образом выделить A, B в этом классе (например зачистным req.uri)
  3. Что-то еще.

Обратите внимание, что «default» и «special» - это не переменные, а фактические маршруты.

ответ

1

Если у вас действительно огромное количество URL-адресов (или вы хотите легко управлять), группируйте их и храните каждый в другом файле.

т.е. Вы можете сгруппировать их следующим образом:

Пусть говорят, что вы можете группировать «/ my_part/A», «/ my_part/A/по умолчанию» и так далее, и хранить их в пусть говорят «маршруты-а. ру».

И аналогично «/ my_part/B», «/ my_part/B/special» и т. Д. И сохраняйте их в let say «routes-b.py». После этого просто импортируйте все маршруты в один файл и используйте его.

Как я понимаю, каждый из них является URL-адресом, поэтому каждый из них будет иметь отдельный запрос GET и POST, поэтому я думаю, что вы должны использовать только отдельный класс. Единый класс для всех кажется плохой идеей (обслуживание в этом случае будет очень трудным в будущем).

После этого просто импортируйте весь файл в один файл и используйте его.

А также я предлагаю вам написать класс только в отдельном файле. Не пишите все в одном файле. Поэтому позже вы можете легко идентифицировать только имя файла.

Пусть брать пример еще раз рассмотрим: файл «routes-a.py» и есть магазин необходимый класс в файле «class-A.py»

import falcon 
from class-A import * 
app = falcon.API() 
app.add_route("/my_part/A/", MyPartA()) 
app.add_route("/my_part/A/default/", MyPartADefault()) 

и для файла «маршрутов-б. ру»и есть магазин необходимый класс в файле„class-B.py“

import falcon 
from class-B import * 
app = falcon.API() 
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 * 

Надеюсь, это поможет вам. Дайте мне знать, если я что-то пропущу.

0

Группировка их в разных файлах является наилучшим способом до сих пор, поскольку здесь нет концепции чертежа, поскольку она находится на флаконе.

Конечно, вы можете создать модуль, который обрабатывает маршрутизацию для всех классов/ресурсов, принадлежащих к одной и той же группе, поскольку все они будут жить под одним и тем же префиксом, например: «/ api/v1» и «/ api/v2 '

В частности, для этого случая требовалось больше одного API, я создал легкую фреймворк, который работает как с флягой, так и с соколом, что позволяет вам настраивать различные apis с собственными конечными точками и позволяет вам вставать и бег супер быстрый.

вы можете проверить его здесь: https://github.com/sebastiandev/peach