Ограничения параметров конечных точек Google Cloud

Я возвращаю данные из моего клиентского приложения Android в свой экземпляр Google App Engine с помощью Google Cloud Endpoints.
Кажется, я достиг предела размера параметра и получаю 413 Full Head Returned. Возникшее исключение: com.google.api.client.googleapis.json.GoogleJsonResponseException: 413 FULL head

Параметр представляет собой строку, содержащую сериализованный JSON. Длина строки, которую я передаю параметру, составляет 4226 символов (Java String). Я погуглил и просмотрел некоторые другие ответы на stackoverflow, но ни один из них напрямую не касается проблемы длины. Насколько я понимаю, я далеко не сталкиваюсь с ограничениями данных POST, но я не могу найти документацию Google, в которой указаны ограничения для параметров в API.

Любая помощь очень ценится.


person John Templer    schedule 24.06.2015    source источник
comment
почему не поделитесь своим кодом?   -  person Nima Derakhshanjan    schedule 24.06.2015
comment
@ApiMethod(name = "saveCompletedForm") public SaveFormResponse saveCompletedForm(@Named("formid") Long formid, @Named("parentkey") String parentKey, @Named("formjson") String formJSON, @Named("username") String userName, @Named("pwd") String password) { ... Таким образом, параметр formjson — это тот, который достигает ограничения. Тем не менее, я читал дальше в @ApiMethod и вижу, что при возврате объекта вы передаете его прямо в метод как Bean, а не как @Named Parameter (именно поэтому он столкнулся с ограничением, поскольку он был передан как параметр запроса в URL-адресе.)   -  person John Templer    schedule 24.06.2015


Ответы (1)


Я нашел ответ. Я использовал параметры @Named для передачи моего json. Это означало, что API использовал параметр запроса для URL, который превышал ограничения для URL длины.

Внимательно прочитайте эту статью https://cloud.google.com/appengine/docs/java/endpoints/annotations#apimethod_method-scoped_annotations Я понял, что для Entity (и длинных строк) я должен просто возвращать сущность, а не использовать параметр @Named.

Я изменил свой код на

@ApiMethod(name = "saveCompletedForm", httpMethod=HttpMethod.POST)
        public SaveFormResponse saveCompletedForm(FullFormBean formBean, @Named("username") String userName, @Named("pwd") String password)
        {...
person John Templer    schedule 24.06.2015