【发布时间】:2020-05-08 10:04:23
【问题描述】:
我有一个包含字段的实体“投票”:
private Integer id;
private LocalDate date;
private LocalTime time = LocalTime.now();
private User user;
private Restaurant restaurant;
我知道对于 REST POST,我应该使用这样的资源模式:
/votes
如果有更新:
/votes/{voteId}
大概我应该像这样在我的控制器中从前端接收全票实体:
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Vote> create(@RequestBody Vote vote)
但我不需要它来创建或更新该实体,我只需要这样的 restaurantId:
@PostMapping
public void create(@RequestParam int restaurantId) {
voteService.create(SecurityUtil.getUserId(), restaurantId);
}
那么,使用这样的资源模式是正确的选择,还是我错了?
对于 POST 创建:
/votes?restaurantId=10
PUT 更新:
/votes/{voteId}?restaurantId=10
【问题讨论】:
-
PUT /votes/{voteId}?restaurantId=?在我看来,您更新了现有Vote的restaurantId属性。至于其他事情,我不确定到底是什么问题。你能再澄清一点吗? -
我想创建和更新投票。例如,如果我使用@RequestBody 投票,那么我应该发送它的参数,例如:private Integer id;私人 LocalDate 日期;私人 LocalTime 时间 = LocalTime.now();私人用户用户;私人餐厅餐厅;但是当我创建那个实体时,我不认识他们中的任何一个。此参数在服务层上创建。
-
还是不明白。您的评论与原始问题有什么关系?