0

我正在从 ruby​​ 进行 ajax 休息调用,并将其转到 python 进行休息调用过程。当我尝试调用 rest 并以 json 格式传递参数时,我认为它可能不会将其作为 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调用的链接: http ://rest.elkstein.org/2008/02/using-rest-in-ruby.html http://developer.yahoo.com/ruby/ruby-rest.html

非常感谢任何帮助。谢谢

4

1 回答 1

0

不要将 JSON 传递给Net::HTTP. 该方法需要一个简单的 ruby​​ 哈希。

实际上,您发送 POST 参数 - POST 参数是通过 HTTP 请求正文发送的,它们不是 JSON 或其他什么,只是简单的字符串。这是 HTTP 的基础知识,所以我建议你阅读一下关于这个协议是如何工作的,如果你理解它会容易得多。

关于 python 方面,我不太了解 Python,但如果你真的需要 JSON(我怀疑),你将不得不以某种方式解析参数。

于 2013-10-19T11:29:30.477 回答