Flask swagger api.doc () требует позиционного аргумента, но фактически задан - PullRequest
0 голосов
/ 20 марта 2019

Я только начал кодировать в бэкэнде Flask Swagger. Когда я пытался извлечь несколько путей и параметров аргумента, возникала ошибка:

TypeError: get() missing 1 required positional argument: 'q'

Но на самом деле моя функция "get ()" имеет позиционный аргумент 'q'. Я могу спросить, почему возникает эта ошибка? Это может быть странно, так как я использую

request.arg.get('q')

работает хорошо и может возвращать ожидаемый аргумент запроса.

Ожидаемые пути API:

GET 127.0.0.1:8888/book/1?q=question20

и мой код здесь:

from flask import Flask, request
from flask_restplus import Resource, Api

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


@api.route("/<string:resource>/<int:rid>")
@api.doc(params={'q': 'Your query here'})
class API(Resource):
    def get(self, resource, rid, q):
        return {"resource": resource,
                "id": rid,
                "query": q
                }, 200


if __name__ == "__main__":
    app.run(host='127.0.0.1', port=8888, debug=True)

Буду признателен, если кто-нибудь поможет мне решить эту проблему.

1 Ответ

1 голос
/ 20 марта 2019

Вы можете использовать api.parser() для документирования и захвата параметров запроса

parser = api.parser()
parser.add_argument('q', type=str, help='Resource name', location='args')

@api.route("/<string:resource>/<int:rid>")
@api.doc(parser=parser)
class API(Resource):
    def get(self, resource, rid):

        args = parser.parse_args()
        q = args['q']

        return {"resource": resource,
                "id": rid,
                "q":q,
                }, 200

Этот метод помечен как устаревший https://flask -restplus.readthedocs.io / en / stable / parsing.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...