изучение Spring's @RequestBody и @RequestParam - PullRequest
14 голосов
/ 26 июля 2010

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

Ответы [ 2 ]

17 голосов
/ 26 июля 2010

Пример контроллера:

@Controller
class FooController {
    @RequestMapping("...")
    void bar(@RequestBody String body, @RequestParam("baz") baz) {
        //method body
    }
}

@ RequestBody : тело переменной будет содержать тело HTTP-запроса

@ RequestParam : переменная baz будет содержать значение параметра запроса baz

2 голосов
/ 07 октября 2015

@ RequestParam аннотированные параметры связываются с конкретными параметрами запроса сервлета. Значения параметров преобразуются в объявленный тип аргумента метода. Эта аннотация указывает, что параметр метода должен быть связан с параметром веб-запроса.

Например, угловой запрос для Spring RequestParam будет выглядеть так:

$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. Эта аннотация указывает, что параметр метода должен быть привязан к телу веб-запроса.

Например, угловой запрос для 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) {...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...