Хотя нет жесткого и быстрого правила, но я обычно избегаю посылать тело в GET-запросе, потому что это плохой дизайн. Вам также следует обратиться к этой SO Post, которая содержит обсуждение использования body в GET-запросе. Это пост с мнением, и нет четких ДА или НЕТ, но вы поймете, как.
HTTP GET с телом запроса
Вы можете использовать параметры Path или параметры запроса в зависимости от того, что представляют эти поля.
Относительно различий или того, что использовать, когда я цитирую этот ответ , в котором упоминается, что хотя не существует жесткого правила, но обычно лучше использовать параметры, которые могут однозначно идентифицировать ресурс как параметр пути (например, id, name и т. д.) и если ваш параметр должен выполнять что-то вроде фильтрации / сортировки, например записи после 1 января 2019 года, затем перейти к параметру запроса.
Также лично в одном из моих API (который выполняет фильтрацию) я использую общий параметр запроса, в котором я передаю объект JSON в своем запросе. Так что в основном мой API должен искать объект на основе переменных / нескольких атрибутов. Например. У меня есть в моем БД, объекты, которые имеют определенные значения напряжения, тока, размера и т. Д. Таким образом, запрос может прийти с комбинацией 1 или более. Поэтому для обеспечения гибкости моего API я предоставил параметр запроса, который может принимать объект JSON.
Поэтому я делаю запрос вот так:
{{SERVER}}/api/search?query={voltage:12V,size:10}
И в моем API я могу преобразовать этот объект json в соответствующий POJO:
@GET
@Path("/search")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response search(@QueryParam("query") String queryParam) throws Exception
{
Myobj obj = new Gson().fromJson(queryParam, Myobj.class);
// rest of code