2

我设置了 ProtoRPC hello 应用程序,但它不起作用我正在使用它发布到它

$.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 Method Not Allowed

应用程序.yaml

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

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

好吧,它是应用引擎上的python,它只是示例程序,所以我发到服务器的帖子一定有问题

4

2 回答 2

2

使用 protopc,它希望 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

于 2012-09-08T12:21:37.367 回答
1

我还发现 ProtoRPC hello 应用示例很难理解,因为它缺少调用服务的示例。我发现测试 hello word 应用程序的最简单方法是使用来自 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,只需去掉 \'s 并将整个 curl 命令放在一行中。

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

于 2012-10-27T19:50:48.767 回答