获取 POST 请求体作为数组的 JSON 作为 flask 中的根节点-restful
Get POST request body as JSON of array as root node in flask-restful
使用 flask-restful
我正在尝试捕获传递到 POST 请求正文中的 JSON 数组,但似乎无法使用 RequestParser
,有什么想法吗?
目前我的代码是这样的:
# api.py
from flask import Flask
from flask_restful import Api
from resources import CustomRange
app = Flask(__name__)
api = Api(app)
api.add_resource(CustomRange, '/customrange/<start>/<end>')
app.run()
# resources.py
from flask_restful import Resource, reqparse
parser = reqparse.RequestParser()
parser.add_argument('data', action="append")
#parser.add_argument('data', type=int, location="json")
#parser.add_argument('data', type=int, location="form")
#parser.add_argument('data', location="json")
#parser.add_argument('data', location="json", action="append")
#parser.add_argument('data', type=list)
#parser.add_argument('data', type=list, location="json")
#parser.add_argument('data', type=list, location="form")
## None of the above variants seem to capture it
class CustomRange(Resource):
def post(self, start: int, end: int):
args = parser.parse_args()
return args # Always {'data': None}
我尝试了一个将以下内容传递到 POST 正文中的简单示例:
[1, 2, 3]
但是没有骰子。甚至在没有 parser.add_argument
.
的情况下也尝试过
这是我正在使用的完整测试请求:
curl --location --request POST '127.0.0.1:5000/customrange/1/100' \
--header 'Content-Type: application/json' \
--data-raw '[1, 2, 3]'
目前 reqparse
将仅处理 JSON 个对象作为正文(source:将在除 dict 和 MultiDict 之外的任何其他对象上失败),而不是任何其他类型。您必须根据需要直接获取 request
对象。
from flask import request
from flask_restful import Resource
class CustomRange(Resource):
def post(self, start: int, end: int):
args = request.json
# rest of your code
使用 flask-restful
我正在尝试捕获传递到 POST 请求正文中的 JSON 数组,但似乎无法使用 RequestParser
,有什么想法吗?
目前我的代码是这样的:
# api.py
from flask import Flask
from flask_restful import Api
from resources import CustomRange
app = Flask(__name__)
api = Api(app)
api.add_resource(CustomRange, '/customrange/<start>/<end>')
app.run()
# resources.py
from flask_restful import Resource, reqparse
parser = reqparse.RequestParser()
parser.add_argument('data', action="append")
#parser.add_argument('data', type=int, location="json")
#parser.add_argument('data', type=int, location="form")
#parser.add_argument('data', location="json")
#parser.add_argument('data', location="json", action="append")
#parser.add_argument('data', type=list)
#parser.add_argument('data', type=list, location="json")
#parser.add_argument('data', type=list, location="form")
## None of the above variants seem to capture it
class CustomRange(Resource):
def post(self, start: int, end: int):
args = parser.parse_args()
return args # Always {'data': None}
我尝试了一个将以下内容传递到 POST 正文中的简单示例:
[1, 2, 3]
但是没有骰子。甚至在没有 parser.add_argument
.
这是我正在使用的完整测试请求:
curl --location --request POST '127.0.0.1:5000/customrange/1/100' \
--header 'Content-Type: application/json' \
--data-raw '[1, 2, 3]'
目前 reqparse
将仅处理 JSON 个对象作为正文(source:将在除 dict 和 MultiDict 之外的任何其他对象上失败),而不是任何其他类型。您必须根据需要直接获取 request
对象。
from flask import request
from flask_restful import Resource
class CustomRange(Resource):
def post(self, start: int, end: int):
args = request.json
# rest of your code