gpt4 book ai didi

python - flask Restful : passing parameters to GET request

转载 作者:IT老高 更新时间:2023-10-28 21:52:56 26 4
gpt4 key购买 nike

我想通过以下方式创建一个支持 GET 请求的资源:

/bar?key1=val1&key2=val2

我试过这段代码,但它不工作

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

class BarAPI(Resource):
def get(key1, key2):
return jsonify(dict(data=[key1, key2]))

api.add_resource(BarAPI, '/bar', endpoint='bar')

谢谢!

最佳答案

编辑:reqparse 不再是使用 flask-restful 执行此操作的推荐方法!,但下面还有另一个使用 marshmallow 的示例。

reqparse 对象已弃用。见 docs或者这篇文章中的第二个例子。


使用 reqparse。您可以在 flask-restful docs 中看到另一个示例.

对参数进行校验,不需要jsonify

from flask import Flask
from flask_restful import Resource, Api, reqparse

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

class BarAPI(Resource):
def get(self):

parser = reqparse.RequestParser()
parser.add_argument('key1', type=str)
parser.add_argument('key2', type=str)

return parser.parse_args()

api.add_resource(BarAPI, '/bar', endpoint='bar')

if __name__ == '__main__':
app.run(debug=True)

另一种方法是使用 marshmallow .

您可以使用 Schema 类来验证 request.args(对于 PUT/POST 请求,您可以验证 request.form)

from flask import Flask, request, abort
from flask_restful import Resource, Api
from marshmallow import Schema, fields


class BarQuerySchema(Schema):
key1 = fields.Str(required=True)
key2 = fields.Str(required=True)

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


class BarAPI(Resource):
def get(self):
errors = schema.validate(request.args)
if errors:
abort(400, str(errors))

return 'ok'

api.add_resource(BarAPI, '/bar', endpoint='bar')

# omit of you intend to use `flask run` command
if __name__ == '__main__':
app.run(debug=True)

此示例要求两个参数都存在。

关于python - flask Restful : passing parameters to GET request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30779584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com