EDIT Я разместил вопрос об этом, и он должен быть исправлен в версии 1.9.16 SDK Google AppEngine. https://code.google.com/p/googleappengine/issues/detail?id=11414Как вызвать API-интерфейсы конечных точек Google для локального хоста?
Я занимаюсь разработкой службы с помощью Google Cloud Endpoints.
И REST, и API RPC отлично работают, когда я развертываю его в App Engine. Однако странно, когда я тестирую локальную службу (localhost), звонки REST работают нормально, но у меня возникают проблемы с вызовами с использованием RPC.
Мой метод подписи в бэкэнд:
@ApiMethod(name = "user.updateprofile", httpMethod = HttpMethod.POST)
public UserProfileDto updateProfile(@Named("sessionToken") String sessionToken, UserProfileDto profile) throws UnauthorizedException { return profile; }
Для простоты я просто возвращение UserProfileDto
непосредственно.
Я попытался выполнить следующий запрос локально:
POST http://localhost:4567/_ah/api/rpc?prettyPrint=false
Content-Type: application/json-rpc
Accept: application/json-rpc
{
"method": "mobilebackend.user.updateprofile",
"id": "gtl_1",
"jsonrpc": "2.0",
"params": {
"sessionToken": "12345",
"resource": {
"username": "foo",
"userPrivate": true
}
},
"apiVersion": "v1"
}
Когда я поставил точку останова в методе updateProfile
, я вижу, что sessionToken
правильно 12345
однако username
поле null
и userPrivate
поле false
, хотя я указал его как true
. Примером UserProfileDto (profile)
является не null
.
Ошибка, что он не может вводить значения в поля DTO при использовании вызовов RPC localhost. Когда я тестирую его на развернутой версии, он отлично работает, и когда я использую вызовы REST, он работает как на локальном хосте, так и при развертывании в App Engine.
Когда я изменяю url в вышеуказанном запросе, чтобы нацелить развернутую версию моего приложения на движок приложения, он работает отлично. https://<app-name>.appspot.com/_ah/api/rpc?prettyPrint=false
Я запустить службу на локальном хосте с помощью:
mvn appengine:devserver
ли я пропустить некоторые настройки, чтобы вызвать методы Cloud Endpoints RPC LOCALHOST? Или это не поддерживается?
Я также заметил, что я также попытался с помощью автоматической генерируемой клиентской библиотеки iOS, которая использует RPC, и она также терпит неудачу с той же ошибкой, что и служба, не вставляющая значения в поля объекта DTO.
У меня была та же проблема, localhost продолжит давать мне NULL результаты для пройденных параметров. Нашел что-то в моих заметках для решения некоторых проблем с локальным хостом, запустив локальный devserver из appengine sdk с параметром appengine-java-sdk-1.8.6/bin/dev_appserver.sh --address = "0.0.0.0" это Некоторое время назад я решил некоторые из моих проблем с localhost. Не помните, был ли этот NULL-переход одним из них, возможно, стоит попробовать? – Pega88
@ Pega88 Спасибо, я постараюсь запустить сервер разработки с 0.0.0.0 и посмотреть, устраняет ли это проблему. Вы видели: https://code.google.com/p/googleappengine/issues/detail?id=11414 Google заявляет, что он должен быть исправлен в версии 1.9.16.Это следующий релиз, так как 1.9.15 был выпущен пару дней назад. Они выпускаются почти каждый месяц, поэтому я с нетерпением жду следующего релиза в качестве рождественского подарка. ;) – dynamokaj
Вы решили свою проблему? –