我正在尝试将api与应用程序结合使用,但是POST出现问题。
当我尝试使用Web App GUI张贴“项目”时,我能够执行GET命令: 不允许的方法 所请求的网址不允许使用此方法。
api.add_resource(Item, '/api/v1/item/<string:name>')
if __name__ == '__main__':
db.init_app(app)
app.run(port=5001, debug=True)
class Item(Resource):
parser = reqparse.RequestParser()
parser.add_argument('price',
type=float,
required=True,
help="This field cannot be left blank!"
)
parser.add_argument('store_id',
type=int,
required=True,
help="Every item needs a store id."
)
def post(self, name):
if ItemModel.find_by_name(name):
return {'message': "An item with name '{}' already exists.".format(name)}, 400
data = Item.parser.parse_args()
item = ItemModel(name, **data) # data['price'], data['store_id']
try:
item.save_to_db()
except:
return {"message": "An error occured inserting the item."}, 500 # Internal Server error
return item.json(), 201
@app.route('/item/<name>', methods=['POST'])
def item(name):
data = {
'price': '16.99',
'store_id': '1',
}
r = requests.post('http://localhost:5001/api/v1/item/'+name, data)
return r.status_code
class ItemModel(db.Model):
__tablename__ = 'items'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
price = db.Column(db.Float(precision=2))
store_id = db.Column(db.Integer, db.ForeignKey('stores.id'))
store = db.relationship("StoreModel")
def __init__(self, name, price, store_id):
self.name = name
self.price = price
self.store_id = store_id
def json(self):
return {
'id': self.id,
'name': self.name,
'price': self.price,
'store_id': self.store_id
}
我的意思是,我想通过GUI,表单...添加项目。