swapger flask restplus, загрузите файл и примите ввод json вместе - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь загрузить файл, а также принять данные от пользователя в формате json с помощью Swagger UI. Я написал код ниже для того же.

upload_parser = api.parser()
upload_parser.add_argument('file', location='files',
                       type=FileStorage, required=True)

type = api.model("tax", {
"tax_form": fields.String()})

@api.route('/extraction')
@api.expect(upload_parser)
class extraction(Resource):
@api.expect(type)
def post(self):

    tax_form= api.payload # json input string
    print(tax_form['tax_form'])
    args = upload_parser.parse_args() # upload a file
    uploaded_file = args['file']
    output = func_extract(uploaded_file,tax_form['tax_form'])
    return output, 201

Когда я запускаю вышеупомянутое индивидуально, например, если я только загружаю файл или принимаю только данные от пользователя, код работает, но если я делаю их вместе. tax_from возвращает None value, оно не принимает то, что я вводил как значение json через Swagger UI.

1 Ответ

0 голосов
/ 13 ноября 2018

Я решил проблему. Используется reqparse для ввода аргумента. Смотрите фрагмент кода, как показано ниже

upload_parser = api.parser()
upload_parser.add_argument('file', location='files',
                   type=FileStorage, required=True)

parser = reqparse.RequestParser()
parser.add_argument('tax_form', required = True)

@api.route('/extraction')
@api.expect(upload_parser)

class extraction(Resource):
@api.expect(parser)

def post(self):
    """
    extract the content
    """
    args1 = parser.parse_args()
    tax_form = args1['tax_form']
    print(tax_form)
    args = upload_parser.parse_args()
    uploaded_file = args['file']
    output = func_extract(uploaded_file,tax_form)
    return output, 201
...