Spring Multiple RequestParams против RequestBody, какой предпочитается? - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в Весеннем Отдыхе. Во время выполнения POST у нас есть 2 варианта: @ RequestBody или @ RequestParams .

Мой запрос не такой, какой они есть. Я довольно хорошо знаю, что они.

Обычно мы используем @RequestParams для формы-urlencoded и @RequestBody для JSON / XML.

У меня есть сценарий, как показано ниже:

class EmployeeDTO {
    long id;
    String name;
    String age;
    String address;
    String salary;

    //Getters and Setters
}

Для POST я могу напрямую использовать как void doSomething (@RequestBody EmployeeDTO) {}

, а также я могу сделать то же самое но с использованием 5 RequestParams

void doSomething (длинный идентификатор @RequestParam (id), @RequestParam (name) имя строки, @RequestParam (age) возраст строки, @RequestParam (адрес) строка address, @RequestParam (salary) String salary) {}

Я видел несколько хороших сайтов, таких как Stripe, они следуют только за @RequestParam в своем REST Api.

Я действительно получил понимаю, что мы используем RequestBody для сложного ввода and@RequestParam для простых параметров.

Итак, мой фактический запрос : в вышеприведенном классе было только 5 параметров, я думаю, что все в порядке с @RequestParam, а что, если есть 7 или 10 входных параметров, тогда Я выбрал RequestBody или (7 или 10) REquestParam?

РЕДАКТИРОВАТЬ:

class Orders {
   String id;
   Employee employee;

}

1 Ответ

1 голос
/ 27 апреля 2020

На самом деле это не выбор, основанный на «количестве данных, которые мне нужно получить sh на сервере».

Исторически и вообще использование строки запроса, как следует из названия, запросить данные. И поэтому параметр запроса будет предпочтительным выбором, когда вы хотите «вытянуть» данные HTTP GET

Здесь, если цель состоит в том, чтобы «pu sh» данные на сервере (например, «создать сотрудника»). ") вы должны предпочесть посылать эти данные в теле запроса.

Кроме того, строка запроса является частью URL, и ее могут прочитать все, кто сидит между клиентами и API, поэтому мы не должны ставить конфиденциальные данные как пароли в строку запроса.

вы можете mimi c формат строки запроса в вашем теле, используя тип mime application/x-www-form-urlencoded. Здесь тело запроса использует тот же формат, что и строка запроса.

parameter=value&parameter2=another
...