Flask: API URL с параметрами ключевых слов - PullRequest
0 голосов
/ 07 сентября 2018

Я хотел бы использовать URL с датами «от» и «до», где также можно указать только один из двух аргументов. В связи с этим мне нужно знать по ключевому слову, указан ли только один аргумент, если это дата «от» или «до».

Как я могу установить URL-адрес таким образом, чтобы я мог проверить, предоставлен ли какой-либо из аргументов, и использовать их в качестве переменной в соответствующем классе?

Эти потоки не решили мою проблему: фляга restful: передача параметров в запрос GET и Как передать параметр URL с помощью python, Flask и командной строки .

class price_history(Resource):
    def get(self, from_, to):
        if from_ and to:
            return 'all data'
        if from_ and not to:
            return 'data beginning at date "from_"'
        if not from_ and to:
            return 'data going to date "to"'
        if not from_ and not to:
            return 'please provide at least one date'

api.add_resource(price_history, '/price_history/from=<from_>&to=<to>')

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Ответы, предоставленные в этой теме , сработали для меня. Это позволяет вам полностью исключить необязательные параметры в URL.

Это пример скорректированного кода:

class price_history(Resource):
    def get(self, from_=None, to=None):
        if from_ and to:
            return 'all data'
        if from_ and not to:
            return 'data beginning at date "from_"'
        if not from_ and to:
            return 'data going to date "to"'
        if not from_ and not to:
            return 'please provide at least one date'

api.add_resource(price_history,
                '/price_history/from=<from_>/to=<to>',
                '/price_history/from=<from_>',
                '/price_history/to=<to>'
                )
0 голосов
/ 07 сентября 2018

Я думаю, что с поправкой на этот ответ вы сможете.

class Foo(Resource):
    args = {
        'from_': fields.Date(required=False),
        'to': fields.Date(required=False)
    }

    @use_kwargs(args)
    def get(self, from_, to):
        if from_ and to:
            return 'all data'
        if from_ and not to:
            return 'data beginning at date "from_"'
        if not from_ and to:
            return 'data going to date "to"'
        if not from_ and not to:
            return 'please provide at least one date'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...