2

我已经能够编写这段代码

from flask_restplus.resource import Resource
from flask_restplus import reqparse

@ns.route('')
class ExampleClass(Resource):  
    @ns.response(500, 'generic error')
    def get(self):        
        parser = reqparse.RequestParser()
        parser.add_argument('arg_name', location='args')
        args = parser.parse_args()
        print('args', args)

这样请求中的参数“aaa”

http://localhost:8888/pathh?arg_name=aaa&

从代码的最后一行正确显示。

然而,可以插入 arg_name 值的输入表单(在 Web 界面中)当然不再可用。

如果将路线修改为

@ns.route('/<string:arg_name>')

然后输入表单再次出现,但请求变为

http://localhost:8888/pathh/aaa?

并且请求解析器不再正常工作。

如何在 Web 界面中显示有效的输入表单,同时以http://localhost:8888/pathh?arg_name=aaa&形式维护请求?谢谢!

4

1 回答 1

1

Parser 可以用来解决这个问题。

parser = api.parser() parser.add_argument('param', type=int, help='Some param', location='path') # "location='path'" 表示只在查询字符串中查找

您可以将解析器传递给装饰器@api.expect:

@ns.route('')
class ExampleClass(Resource):  
    @ns.response(500, 'generic error')
    @api.expect(parser)
        def get(self):        
        parser = reqparse.RequestParser()
        parser.add_argument('arg_name', location='args')
        args = parser.parse_args()
        print('args', args)
于 2020-01-14T21:52:28.900 回答