Spring HATEOAS自定义控制器 - 允许将URI转换为实体

时间:2017-11-01 20:35:18

标签: spring mongodb spring-data-rest spring-hateoas

这是我想要实现的一个例子:

@RepositoryRestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserRepository userRepository;

    @Autowired
    private TaskRepository taskRepository;

    @PostMapping("/addCompletedTask")
    public void addCompletedTask(User user, Task task) {
        user.getCompletedTasks().add(task);
        task.incrementCompletedBy();
        userRepository.save(user);
        taskRepository.save(task);
    }
}

然后我会提出这样的请求:



POST http://localhost:8080/api/users/addCompletedTask
{
 "user": "http://localhost:8080/api/db/users/59fa19bfd58dcf25e82082b2",
 "task": "http://localhost:8080/api/db/tasks/59fa19bfd58dcf22d2322312"
}




我尝试使用Resource<User>将参数包装到方法中,添加@RequestBody,没有任何效果,一切都是null

我不知道它是否可能,但我已经看过人们编写这样的代码的例子,所以也许我错过了一些东西(here for example)。或者也许有一些方法可以通过一次调用中的存储库来做到这一点?我可以在一个调用中添加一个任务,在另一个调用中增加计数器,但这需要来自客户端的两个调用。此外,我很确定我会遇到与此类似的另一种情况,所以如果有一个很好的解决方案。

0 个答案:

没有答案