2012-02-01 77 views
2

我設置的ProtoRPC的問候應用程序,我正在使用此張貼到它ProtoRPC的設置基本的Hello World不起作用

$.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 

好吧,這是在App Engine上蟒蛇,它只是示例程序所以它必須是壞了我的崗位到服務器

+0

您需要發佈您的app.ymal並註冊服務代碼 – 2012-02-01 11:46:17

回答

2

使用protorpc,它希望您的HelloService中的遠程方法名稱位於您發佈的網址上。

如果您使用此代碼來註冊服務映射,

# 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

我也發現很難理解,因爲它缺乏用於調用服務爲例ProtoRPC的招呼應用實例。我發現測試招呼詞的應用程序是使用捲曲表彰從UNIX類終端,比如最簡單的方法:

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

一定要使用自己的本地主機:端口號的URL

和你將接收響應:如果您在PowerShell中使用捲曲

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

,剛剛擺脫\'S和把整個curl命令在一行上。

一旦你看到它在那裏工作,你可以嘗試一個$ .ajax調用。