我正在从ruby进行ajax rest调用,然后进入python进行rest call proccess。当我试图在json formate中调用休息和传递params时,我认为它可能不会将此作为json数据传递。 我的ajax电话如下:
get '/cnet' do
temp="mynet"
url = URI.parse('http://192.168.1.9:8080/v2.0/networks')
params = {'net_name'=>temp}.to_json
resp = Net::HTTP.post_form(url, params)
resp_text = resp.body
puts resp_text
erb resp_text
end
Python代码如下:
@app.route('/v2.0/networks',methods=['POST'])
def net_create():
net_res=request.json
print "======================="
print net_res['net_name']
print "======================="
net_name=net_res['net_name']
当我试图从python中读取json数据时,它给出了以下错误:
File "/network-ui/neutron_plugin.py", line 226, in net_create
net_name=net_res['net_name']
TypeError: 'NoneType' object has no attribute '__getitem__'
我不知道到底发生了什么。
我正在关注ajax post call的链接: http://rest.elkstein.org/2008/02/using-rest-in-ruby.html http://developer.yahoo.com/ruby/ruby-rest.html
任何帮助非常感谢。感谢
答案 0 :(得分:0)
不要将JSON传递给Net::HTTP
。该方法需要一个简单的ruby散列。
实际上,你发送POST参数 - POST参数通过HTTP请求体发送,它们不是JSON或其他什么,只是简单的字符串。这是HTTP基础知识,所以我建议你read a bit关于这个协议的工作方式,如果你理解它会更容易。
关于python方面,我不太了解Python,但如果你真的需要JSON(我怀疑),你将不得不以某种方式解析params。