Настройка ProtoRPC: основной привет! - PullRequest
2 голосов
/ 01 февраля 2012

я установил приложение 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 Метод не разрешен

app.yaml

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

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

Хорошо, это python на движке приложения, это просто пример программы, так что с моим сообщением на сервере должно быть что-то не так

Ответы [ 2 ]

2 голосов
/ 08 сентября 2012

При использовании protorpc ожидается, что имя удаленного метода в вашем HelloService будет в URL-адресе, на который вы отправляете сообщение.

Если вы используете этот код для регистрации сопоставления службы,

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

, тогда вам нужно изменить URL-адрес вашего поста следующим образом:

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

Дополнительный ".hello" относится к методу "hello" в классе HelloService.Если вы переименуете этот метод в fred, вам также потребуется изменить его на .fred

. Подробнее о том, как это работает, читайте далее на странице, где они разрабатывают PostService для приложения гостевой книги.

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

1 голос
/ 27 октября 2012

Мне также было трудно понять пример приложения ProtoRPC hello, поскольку в нем не было примера для вызова службы.Я обнаружил, что самый простой способ протестировать приложение hello word - это использовать curl commend из терминала Unix-типа, такого как:

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

, обязательно используйте свой собственный localhost: portnumber для URL

и вы получите ответ:

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

если вы используете curl в powershell, просто избавьтесь от \ 's и поместите всю команду curl в одну строку.

Как только вы увидите, что это работает, вы можете попробовать вызов $ .ajax.

...