我遍历了Spring文档,以了解@RequestBody,他们给出了以下解释:


@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body, Writer writer) throws IOException {
  writer.write(body);
}



但我的困惑是他们在文档中写的句子是



那是什么意思?谁能给我一个例子吗?

Spring doc中的@RequestParam定义是



我对他们感到困惑。请帮我举个例子,说明它们之间的区别。

最佳答案

@RequestParam 带注释的参数链接到特定的Servlet请求参数。参数值将转换为声明的方法参数类型。
此注释指示方法参数应绑定(bind)到Web请求参数。

例如,对Spring RequestParam(s)的 Angular 请求如下所示:

$http.post('http://localhost:7777/scan/l/register?username="Johny"&password="123123"&auth=true')
      .success(function (data, status, headers, config) {
                        ...
                    })

带有RequestParam的端点:
@RequestMapping(method = RequestMethod.POST, value = "/register")
public Map<String, String> register(Model uiModel,
                                    @RequestParam String username,
                                    @RequestParam String password,
                                    @RequestParam boolean auth,
                                    HttpServletRequest httpServletRequest) {...

@RequestBody 带注释的参数链接到HTTP请求正文。使用HttpMessageConverters将参数值转换为声明的方法参数类型。
此注释指示方法参数应绑定(bind)到Web请求的主体。

例如,对Spring RequestBody的Angular请求如下所示:
$scope.user = {
            username: "foo",
            auth: true,
            password: "bar"
        };
$http.post('http://localhost:7777/scan/l/register', $scope.user).
                        success(function (data, status, headers, config) {
                            ...
                        })

带有RequestBody的端点:
@RequestMapping(method = RequestMethod.POST, produces = "application/json",
                value = "/register")
public Map<String, String> register(Model uiModel,
                                    @RequestBody User user,
                                    HttpServletRequest httpServletRequest) {...

希望这可以帮助。

关于spring - @RequestBody和@RequestParam有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28039709/

10-11 01:06