这是我想要实现的一个例子:
@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)。或者也许有一些方法可以通过一次调用中的存储库来做到这一点?我可以在一个调用中添加一个任务,在另一个调用中增加计数器,但这需要来自客户端的两个调用。此外,我很确定我会遇到与此类似的另一种情况,所以如果有一个很好的解决方案。