Иерархия маршрутов без переписывания обработчиков - PullRequest
1 голос
/ 24 марта 2019

Я пишу колбу-приложение. Имеет смысл иметь несколько конечных точек, например:

prefix + '/'
prefix + '/<id>'
prefix + '/<id>/parameters'
prefix + '/<id>/parameters/<param>'

Однако, если я попытаюсь объявить их все в чертеже, я получу AssertionError: Handler is overwriting existing for endpoint _blueprintname_._firsthandlername_

Есть ли способ обойти это? Я знаю, что это было прямо сделано раньше, в таких технологиях, как .net core. Заранее спасибо.

1 Ответ

0 голосов
/ 24 марта 2019

Если вы планируете добавить много параметров в свои маршруты, вы можете взглянуть на этот модуль для фляги.Это поможет вам назначить маршруты для ресурсов.

Вы можете создать набор маршрутов следующим образом:

from flask import Flask, request
from flask_restful import Resource, Api, reqparse

app = Flask(__name__)
api = Api(app)

class Some(Resource):
  def get(self, id=None, params=None):
    """
      In order to allow empty params for routes, the named arguments
      must be initialized 
    """
    if id and params:
      return {'message':'this is get with id and params'}
    if id:
      return {'message':'this is get with id'}

    return {'message':'this is get'}


  def post():
    """
      One can use here reqparse module to validate post params
    """
    return {'message':'this is post'}

# Add the resource to the service 
api.add_resource(Some, '/', '/<string:id>','/<string:id>/<string:params>', ...)

# start the service
if __name__ == '__main__':
  app.run(debug=True)
...