как передать объект в шаблон REST Spring с помощью get - PullRequest
0 голосов
/ 01 сентября 2018

Я использую шаблон Spring REST для извлечения данных, используя POST, и все работает нормально.

ResponseEntity<MyObject> resp= restTemplate.postForEntity("url", inputParam, MyObject.class);

Но теперь, поскольку я не выполняю никаких операций POST, я хочу изменить его на GET. Я могу сделать это, добавив все входные параметры в качестве параметров URL и сделать:

ResponseEntity<MyObject> resp= restTemplate.getForEntity("url",MyObject.class);

Но проблема в том, что inputParam имеет много параметров, поэтому подготовка URL-адреса вручную - не лучшее решение. Также GET запросы имеют ограничения по длине.

Есть ли другое лучшее решение для этого?

1 Ответ

0 голосов
/ 01 сентября 2018

Прежде всего, я думаю, что ваша вторая строка должна сказать getForEntity().

Во-вторых, есть множество опций класса построителя URL, если вы гуглите (в том числе из Spring). Поэтому я бы использовал класс построения URL-адресов для подготовки URL-адреса, а не делал это вручную, что может привести к путанице.

ограничение длины

Здесь есть хорошая запись SO, отмечающая ограничения по длине обычных браузеров; так что, если он проходит через браузер, то я буду придерживаться POST, если вы потенциально превысили нижний предел 2000, который они предлагают.

Технически не должно быть ограничения в соответствии с https://www.w3.org/2001/tag/doc/get7#myths.

Я думаю, что для многих фоновых технологий нет предела. Таким образом, если это только API и не идет через браузер (например, от серверной части к серверной), вы можете игнорировать эти ограничения. Хотя я бы порекомендовал изучить это и протестировать с помощью своего бэкенда.

UniRest

Кроме того, в качестве личной рекомендации я обнаружил, что UniRest является удивительно полезным REST-клиентом, который делает большую часть моего кода намного чище :). Если у вас есть время, возможно, попробуйте сделать это.

http://unirest.io/java.html

...