我正在尝试使用瓶子构建RESTful api。 我目前在实现HTTP方法PATCH时遇到了麻烦,所以我希望有人可以帮助我找出我做错了什么。 我对python,bottle和mongodb很新,所以这更像是一个学习过程。
以下是db的设置方式
dbname = "movies"
#plugin = MongoPlugin(uri, db, json_mongo=True)
connection = MongoClient(uri, 27017)
db = connection[dbname]
db[dbname].insert(movies)
我在数据库中放入的数据
movies = [{'title' : 'Blade Runner', 'rel_date' : '25 June 1982', 'prod_company' : 'Warner Bros.'},
{'title': 'Snatch', 'rel_date': '19 January 2001', 'prod_company': 'Columbia Pictures'},
{'title': 'The Godfather', 'rel_date': '24 March 1972', 'prod_company': 'Paramount Pictures'},
{"title": "Fight Club", "rel_date": "21 September 1999", "prod_company": "20th Century Fox" }]
这是我处理PATCH的方法
@app.route('/<name>', method='PATCH')
def update_movie(name):
data = request.body.read_line()
if not data:
abort(404, 'No data received')
entity = json.loads(data)
db[dbname].update({'title' : name}, {'$set':entity}}) # edited
return {'Message' : 'The movie was updated'}
我使用Postman发送请求。如果我发送像这样的PATCH请求
http://localhost:8080/test
passing: {"rel_date": "new_date"}
我收到错误:405方法不允许:请求的网址导致错误。 请帮我弄清楚我做错了什么。 感谢。
答案 0 :(得分:0)
发现错误。我的溃败没有正确设置,导致405。 还纠正了函数内部的一些错误。
@route('/movies/<name>', method='PATCH')
def update_movie(name):
data = request.json
if not data:
abort(400, 'No data received')
try:
db[dbname].update_one({'title' : name}, {'$set': data})
except Exception as e:
print (e)
return {'Message' : 'The movie was updated'}