Spring Spring可以将路径变量转换为对象,就像使用@RequestBody的请求参数一样吗?

时间:2017-08-17 13:31:35

标签: spring rest

使用Spring REST,请求参数转换为对象(如果您发布帖子),并使用@RequestBody,例如:

@RestController
@RequestMapping("/reservations")
class ReservationController{
    ...
    @RequestMapping(value="/postByName")
    public  Reservation save(@RequestBody Reservation reservation) {
        return reservationRepository.save(reservation);
    }
    ...
}

然后我这样做,这很好,创建了预订:

curl -i -X POST -H "Content-Type:application/json" -d "{ \"name\" : \"Foo\" }" http://localhost:8080/reservations/postByName

我的问题是,当您使用路径变量而不是请求参数时,是否存在某些内容。所以我应该这样做:

curl -i -X POST -H "Content-Type:application/json" http://localhost:8080/reservations/postByName/Foo

现在我手工完成:在代码中我创建一个带new的预留并将路径变量放入其中。

1 个答案:

答案 0 :(得分:0)

The documentation说:

  

@PathVariable参数可以是任何简单类型,例如int,long,Date等。如果无法执行此操作,Spring会自动转换为适当的类型或抛出TypeMismatchException。您还可以注册支持解析其他数据类型。请参阅“方法参数和类型转换”一节以及“自定义WebDataBinder初始化”一节。