Использование HTTP-клиента-разработчика с почтовым запросом и приложением Content-Type/x-www-form-urlencoded
1) Только @RequestBody
Запрос - localhost: 8080/SpringMVC/welcome В Body - name = abc
код -
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestBody String body, Model model) {
model.addAttribute("message", body);
return "hello";
}
//Дает тело как 'name = abc', как ожидалось
2) Только @RequestParam
Запрос - localhost: 8080/SpringMVC/welcome В Body - name = abc
код -
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestParam String name, Model model) {
model.addAttribute("name", name);
return "hello";
}
//Дает имя как 'abc', как ожидалось
3) Оба вместе
Запрос - localhost: 8080/SpringMVC/welcome В Body - name = abc
код -
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestBody String body, @RequestParam String name, Model model) {
model.addAttribute("name", name);
model.addAttribute("message", body);
return "hello";
}
//Код ошибки HTTP 400 - запрос, отправленный клиентом, был синтаксически неправильным.
4) Выше с измененной позицией изменения
Запрос - localhost: 8080/SpringMVC/welcome В Body - name = abc
код -
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestParam String name, @RequestBody String body, Model model) {
model.addAttribute("name", name);
model.addAttribute("message", body);
return "hello";
}
//Ошибка. Имя - 'abc'. тело пустое
5) Вместе, но получите параметры url типа
Запрос - localhost: 8080/SpringMVC/welcome? name = xyz В Body - name = abc
код -
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestBody String body, @RequestParam String name, Model model) {
model.addAttribute("name", name);
model.addAttribute("message", body);
return "hello";
}
//name is 'xyz', а body - 'name = abc'
6) То же, что и 5), но с измененной позицией параметров
Код -
@RequestMapping(method = RequestMethod.POST)
public String printWelcome(@RequestParam String name, @RequestBody String body, Model model) {
model.addAttribute("name", name);
model.addAttribute("message", body);
return "hello";
}
//name = 'xyz, abc' body пуст
Может ли кто-нибудь объяснить это поведение?