Подтвердить что ты не робот

Обучение Spring @RequestBody и @RequestParam

Я редактирую веб-проект, который использует Spring, и мне нужно добавить некоторые из аннотаций Spring. Два из них, которые я добавляю, @RequestBody и @RequestParam. Я немного подшучивал и нашел этот, но я до сих пор не совсем понимаю, как использовать эти аннотации. Может ли кто-нибудь представить пример?

4b9b3361

Ответ 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) {...

Надеюсь, что это поможет.