如何同时获得值@RequestBody和@RequestParam

时间:2017-09-19 11:21:17

标签: spring rest spring-mvc spring-boot

如何同时获取@RequestBody和@RequestParam这两个值? 在代码下面:

--allow-file-access-from-files
有可能吗? for @RequestMapping(value = "/sign-up", method = RequestMethod.POST) public ResponseEntity<?> addUser(@RequestBody User user,@RequestParam("location") String location,@RequestParam("deviceid") String deviceid) { System.out.println(location); System.out.println(deviceid); Content-Type application / x-www-form-urlencoded 和@RequestParam Content-type application / json 如果还有其他方法,我想要值位置和deviceid吗?

1 个答案:

答案 0 :(得分:0)

  1. @PathVariable是从uri获取一些占位符(Spring 称之为URI模板) - 见Spring Reference Chapter 16.3.2.2 URI 模板模式
  2. @RequestParam是获取参数 - 请参阅 Spring Reference Chapter 16.3.3.3 Binding request parameters to method parameters with @RequestParam
  3. 如果网址http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013在2013年12月5日获得用户1234的发票,则控制器方法如下所示:

    @RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET)
    public List<Invoice> listUsersInvoices(
                @PathVariable("userId") int user,
                @RequestParam(value = "date", required = false) Date dateOrNull) {
      ...
    }
    

    此外,请求参数可以是可选的,但路径变量不能 - 如果是,则会更改URL路径层次结构并引入请求映射冲突。例如,/ user / invoices会为用户提供null的发票或有关ID&#34;发票的用户的详细信息&#34;