ProtoRPC设置基本的hello world不起作用

时间:2012-02-01 04:01:32

标签: google-app-engine jquery protorpc

我设置了ProtoRPC你好应用程序,它不起作用我用这个发布到它

$.ajax({url: "http://wordninjabackend.appspot.com/hello",
type: 'POST',
contentType: 'application/json',
data: "{ my_name: Bob }",
dataType: 'json',
success: function(response) {
    // The response is { hello: “Hello there, Bob!” }
        alert(response.hello);
    }
});

我正在调整:405方法不允许

的app.yaml

application: wordninjabackend
version: 1
api_version: 1
runtime: python

handlers:
- url: .*
script: main.py

好吧,它是应用程序引擎上的python,它只是示例程序,因此我的帖子到服务器时出错了

2 个答案:

答案 0 :(得分:2)

使用protorpc,它希望HelloService中的远程方法名称位于您发布的URL上。

如果您使用此代码注册服务映射,

# Map the RPC service and path (/hello)
    app = service.service_mappings([('/hello.*', HelloService)])

然后你需要将你的帖子更改为:

http://wordninjabackend.appspot.com/hello.hello

额外的“.hello”指的是HelloService类中的方法“hello”。如果将该方法重命名为fred,则还需要将其更改为.fred

有关其工作原理的更多信息,请在页面下方进一步阅读,以便为留言板应用程序开发PostService。

https://developers.google.com/appengine/docs/python/tools/protorpc/overview#The_Hello_World_of_ProtoRPC

答案 1 :(得分:1)

我还发现ProtoRPC hello app示例很难理解,因为它缺少调用服务的示例。我发现测试hello word app的最简单方法是使用unix类型终端的curl命令,例如:

curl -H \
'content-type:application/json' -d \
'{ "my_name": "Bob" }' http://localhost:8083/hello.hello

请务必使用您自己的localhost:portnumber作为URL

您将收到回复:

{"hello": "Hello there, Bob!"}

如果你在powershell中使用curl,只需删除\并将整个curl命令放在一行。

一旦你看到它在那里工作,你可以尝试$ .ajax调用。