我创建了一个应用程序,您可以在其中提出问题和答案。关于如何创建地址以便为问题的答案添加评估,我遇到了一个小问题。
有两个想法来找我
select r.*
from routes r
where departure_airport > arrival_airport;
或
POST http://localhost:8080/answers/{answerId}/votes
在我看来,第一个地址更合适,因为在网站上我将能够得到答案
POST http://localhost:8080/questions/{questionId}/answers/{answerId}/votes
但是,第二个地址的服务看起来像这样
AnswerEntity answerEntity = this.answerRepository.getById(answerId);
answerEntity.setVotes(...);
因此,在我看来,第一个地址更好,但我想请你就这个问题发表意见。根据REST API,第一个地址是否正确?
答案 0 :(得分:1)
这两个路径对REST API都有效,但它们具有不同的语义。
第一条路径/answers/{answerId}/votes
应该允许通过简单地使用唯一答案ID作为参考来访问系统中任意答案的投票。这里没有问题背景。
第二条路径/questions/{questionId}/answers/{answerId}/votes
限制了有效在URL中使用的答案ID集,因为该路径的开头将上下文缩小到特定问题。然后,只允许回答该特定问题的ID以请求相应的投票。
因此,这取决于您希望为消费者提供的服务,即最适合您消费者需求的服务。