flask restful 强制执行所需的类型化参数

flask restful enforcing required typed parameters

我正在使用 Flask==1.1.2 和 flask-restplus==0.13.0 创建一个粗略的 REST API。

我正在关注如何指定是否需要参数的 official documentation,但是,我仍然可以在没有参数的情况下访问 URLS,并且不会抛出任何错误。

生成的 Swagger UI 也没有反映方法需要参数。我该如何执行?

这是我的代码:

from flask import Flask
from flask_restplus import Api, Resource, reqparse
from werkzeug.exceptions import BadRequest


#e = BadRequest('My custom message')
#e.data = {'custom': 'value'}
#raise e

flask_app = Flask(__name__)
app = Api(app = flask_app)


mylist_namespace = app.namespace('mylist', description='MyList API')



@mylist_namespace.route("/")
class MyListClass(Resource):
    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument('rate', type=int, required=True,  help='Rate cannot be converted')
        parser.add_argument('name', type=str, help='Enter a name')      
        return {
            "status": "Got my list"
        }

    def post(self):
        return {
            "status": "Posted my list"
    }

为了运行验证,你需要强制reqparser解析数据

data = parser.parse_args()

解析后,您可以在 data dict

中访问您的参数

此外,我建议您将解析器初始化移动到 class 级别以避免创建额外的解析器。

class MyListClass(Resource):
    parser = reqparse.RequestParser()
    parser.add_argument('rate', type=int, required=True,  help='Rate cannot be converted')
    parser.add_argument('name', type=str, help='Enter a name') 
    def get(self):
        ...

因此,您的解析将使用 'self' 关键字:

data = self.parser.parse_args()