如何在Spring-rest中将路径变量映射到实体

时间:2016-12-20 10:26:50

标签: java spring-restcontroller spring-rest

我在Spring-RS中获得了一些REST端点,它使用实体id作为路径变量。大多数情况下,该方法所做的第一件事是使用id检索实体。有没有办法自动将id映射到实体,只有实体作为方法参数?

现状:

@RequestMapping(path="/{entityId})
public void method(@PathVariable String entityId) {
    Entity entity = entityRepository.findOne(entityId);
    //Do some work
}

我想拥有什么:

@RequestMapping(path="/{entityId})
public void method(@PathVariable Entity entityId) {
    //Do some work
}

2 个答案:

答案 0 :(得分:0)

如果您正在使用Spring Data,那是可能的。参见official documentation

答案 1 :(得分:-1)

您可以这样做:

@RequestMapping(value = "/doctor/appointments/{start}/{end}", produces = "application/json")
@ResponseBody
public List<Appointment> showAppointments(Model model, @ModelAttribute("start") Date start,
        @ModelAttribute("end") Date end, Principal principal) {

}

获取自定义对象,Spring将尝试将参数转换为给定类型。

出于安全原因,我倾向于大多数时间都传递id。