REST API中的正确寻址

时间:2018-01-27 20:42:24

标签: java spring rest spring-mvc spring-boot

我创建了一个应用程序,您可以在其中提出问题和答案。关于如何创建地址以便为问题的答案添加评估,我遇到了一个小问题。

有两个想法来找我

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,第一个地址是否正确?

1 个答案:

答案 0 :(得分:1)

这两个路径对REST API都有效,但它们具有不同的语义。

第一条路径/answers/{answerId}/votes应该允许通过简单地使用唯一答案ID作为参考来访问系统中任意答案的投票。这里没有问题背景。

第二条路径/questions/{questionId}/answers/{answerId}/votes限制了有效在URL中使用的答案ID集,因为该路径的开头将上下文缩小到特定问题。然后,只允许回答该特定问题的ID以请求相应的投票。

因此,这取决于您希望为消费者提供的服务,即最适合您消费者需求的服务。