Я редактирую веб-проект, который использует Spring, и мне нужно добавить некоторые из аннотаций Spring. Два из них, которые я добавляю, @RequestBody и @RequestParam. Я немного подшучивал и нашел этот, но я до сих пор не совсем понимаю, как использовать эти аннотации. Может ли кто-нибудь представить пример?
Обучение Spring @RequestBody и @RequestParam
Ответ 1
Пример контроллера:
@Controller
class FooController {
@RequestMapping("...")
void bar(@RequestBody String body, @RequestParam("baz") baz) {
//method body
}
}
@RequestBody: тело переменной будет содержать тело HTTP-запроса
@RequestParam: переменная baz будет содержать значение параметра запроса baz
Ответ 2
@RequestParam аннотированные параметры связаны с определенными параметрами запроса сервлета. Значения параметров преобразуются в тип аргумента объявленного метода. Эта аннотация указывает, что параметр метода должен быть привязан к параметру веб-запроса.
Например, запрос Angular для Spring RequestParam (s) будет выглядеть следующим образом:
$http.post('http://localhost:7777/scan/l/register', {params: {"username": $scope.username, "password": $scope.password, "auth": true}}).
success(function (data, status, headers, config) {
...
})
@RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "/register")
public Map<String, String> register(Model uiModel,
@RequestParam String username, @RequestParam String password, boolean auth,
HttpServletRequest httpServletRequest) {...
@RequestBody аннотированные параметры связаны с телом HTTP-запроса. Значения параметров преобразуются в тип аргумента объявленного метода с использованием HttpMessageConverters. Эта аннотация указывает, что параметр метода должен быть привязан к телу веб-запроса.
Например, запрос Angular для Spring RequestBody будет выглядеть следующим образом:
$scope.user = {
username: "foo",
auth: true,
password: "bar"
};
$http.post('http://localhost:7777/scan/l/register', $scope.user).
success(function (data, status, headers, config) {
...
})
@RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "/register")
public Map<String, String> register(Model uiModel,
@RequestBody User user,
HttpServletRequest httpServletRequest) {...
Надеюсь, что это поможет.