如何通过 JSON post 操作更新现有 Rails 模型 object?
How to update an existing Rails model object via a JSON post operation?
我正在将数据写入 Rails 模型,使用 Python 发送 JSON(为了演示我创建了一个简单的脚手架 Book
,带有标题和价格):
import json, urllib2
httpHeaders = {'Content-Type': 'application/json', 'Accept': 'application/json'}
bookData = {"title": "blah", "price":5}
req = urllib2.Request("http://localhost:3000/books.json", json.dumps({"book": bookData}), httpHeaders)
response = json.loads(urllib2.urlopen(req).read())
这将插入图书并为其指定 ID = 1:
# http://localhost:3000/books/1.json
{"id": 1,"title": "blah","price": 5}
现在如何通过 JSON 编辑此记录,例如更改价格?
在写问题的过程中我偶然发现了答案,所以我没有删除它而是决定 post 问题和答案,因为我看不到它在别处被问到在 SO.
rake routes
显示更新方法使用 PATCH(而不是 GET 或 PUT),因此对 How do I make a PATCH request in Python 的回答帮助我在 Python/Rails 上下文中解决了这个问题:
bookData = {"price":60}
req = urllib2.Request("http://localhost:3000/books/1.json", json.dumps({"book": bookData}), httpHeaders)
req.get_method = lambda: 'PATCH'
response = json.loads(urllib2.urlopen(req).read())
我正在将数据写入 Rails 模型,使用 Python 发送 JSON(为了演示我创建了一个简单的脚手架 Book
,带有标题和价格):
import json, urllib2
httpHeaders = {'Content-Type': 'application/json', 'Accept': 'application/json'}
bookData = {"title": "blah", "price":5}
req = urllib2.Request("http://localhost:3000/books.json", json.dumps({"book": bookData}), httpHeaders)
response = json.loads(urllib2.urlopen(req).read())
这将插入图书并为其指定 ID = 1:
# http://localhost:3000/books/1.json
{"id": 1,"title": "blah","price": 5}
现在如何通过 JSON 编辑此记录,例如更改价格?
在写问题的过程中我偶然发现了答案,所以我没有删除它而是决定 post 问题和答案,因为我看不到它在别处被问到在 SO.
rake routes
显示更新方法使用 PATCH(而不是 GET 或 PUT),因此对 How do I make a PATCH request in Python 的回答帮助我在 Python/Rails 上下文中解决了这个问题:
bookData = {"price":60}
req = urllib2.Request("http://localhost:3000/books/1.json", json.dumps({"book": bookData}), httpHeaders)
req.get_method = lambda: 'PATCH'
response = json.loads(urllib2.urlopen(req).read())