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()
我正在使用 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()