Существует два способа отправки параметров в методе Http Get
. PathVariable
и RequestParam
. Таким образом, отправленные параметры видны в URL запроса. например:
www.sampleAddress.com/countries/{parameter1}/get-time?city=someValues
В приведенном выше запросе parameter1
является переменной пути, а parameter2
является параметром запроса. Таким образом, пример действительного URL будет:
www.sampleAddress.com/countries/Germany/get-time?city=berlin
Чтобы получить доступ к этим параметрам в контроллере Java, вам нужно определить конкретное имя для параметров. Например, следующий контроллер будет получать запросы такого типа:
@GetMapping(value = "/countries/{parameter1}/get-time", produces = "application/json; charset=utf-8")
public String getTimeOfCities(
@PathVariable(value = "parameter1") String country,
@RequestParam(value = "city") String city
){
return "the method is not implemented yet";
}
Вы можете отправить RequestBody
через Get
запрос, но это не рекомендуется в соответствии с этой ссылкой.
да, вы можете отправить тело с GET, и нет, это никогда не полезно
сделать это.
Эта разработка на сайте asticsearch тоже хороша:
HTTP-библиотеки некоторых языков (особенно JavaScript) не позволяют GET-запросам иметь тело запроса. Фактически, некоторые пользователи удивляются, что GET-запросам всегда разрешено иметь тело.
Правда в том, что RFC 7231 - RFC, который имеет дело с семантикой HTTP и
содержимое - не определяет, что должно произойти с запросом GET с
тело! В результате некоторые HTTP-серверы позволяют это, а некоторые - особенно
кеширующие прокси - не надо.
Если вы хотите использовать метод Post
, вы также можете иметь RequestBody
. В случае, если вы хотите отправить данные с помощью почтового запроса, соответствующий контроллер будет выглядеть так:
@PostMapping(value = "/countries/{parameter1}/get-time", produces = "application/json; charset=utf-8")
public String getTimeOfCitiesByPost(
@PathVariable(value = "parameter1") String country,
@RequestParam(value = "city") String city,
@RequestBody Object myCustomObject
){
return "the method is not implemented yet";
}
myCustomObject
может иметь любой тип данных, который вы определили в своем коде. Обратите внимание, что таким образом вы должны отправить тело запроса в виде строки Json
.