ish*_*147 4 python bad-request flask flask-restful
我正在测试/尝试学习 Flask 和 flast_restful。我得到的这个问题是:
code 400, message Bad request syntax ('name=testitem')
主要.py:
from flask import Flask,request
from flask_restful import Api, Resource, reqparse
app = Flask(__name__)
api = Api(app)
product_put_args = reqparse.RequestParser()
product_put_args.add_argument("name", type = str, help = "Name of the product")
product_put_args.add_argument("quantity", type = int, help = "Quantity of the item")
products = {}
class Product(Resource):
def get(self, barcode):
return products[barcode]
def put(self, barcode):
args = product_put_args.parse_args()
return {barcode: args}
api.add_resource(Product, "/product/<int:barcode>")
if(__name__) == "__main__":
app.run(debug = True)
Run Code Online (Sandbox Code Playgroud)
和我的 测试.py
import requests
base = "http://127.0.0.1:5000/"
response = requests.put(base + "product/1", {"name": "testitem"})
print(response.json())
Run Code Online (Sandbox Code Playgroud)
我试图改革 mat 并更改这两个文件,以找出发送问题的原因,我觉得这很简单,但如果你能帮助我,我打赌这将帮助我和许多其他正在尝试开始创建的人一个休息 API。
小智 12
您需要将位置信息添加到 RequestParser 默认情况下,它会尝试解析来自flask.Request.values、 和 的值,但在您的情况下,需要从flask.request.formflask.Request.json解析这些值。下面的代码修复了您的错误
from flask import Flask,request
from flask_restful import Api, Resource, reqparse
app = Flask(__name__)
api = Api(app)
product_put_args = reqparse.RequestParser()
product_put_args.add_argument("name", type = str, help = "Name of the product", location='form')
product_put_args.add_argument("quantity", type = int, help = "Quantity of the item", location='form')
products = {}
class Product(Resource):
def get(self, barcode):
return products[barcode]
def put(self, barcode):
args = product_put_args.parse_args()
products[barcode] = args['name']
return {barcode: args}
api.add_resource(Product, "/product/<int:barcode>")
if(__name__) == "__main__":
app.run(debug = True)
Run Code Online (Sandbox Code Playgroud)