我正在构建我的第一个API,我想知道是否 - 因为这些操作是应用程序的核心,并且将被任何客户端利用 - 我应该以暴露典型CRUD场景之外的操作的方式构建我的api 。我有报告的内容,但我也需要允许用户批准或拒绝报告,所以我想这样的事情:
/api/report/id/approve
/api/report/id/deny
会很有用。在API方面,这是否违反任何标准或做法?
答案 0 :(得分:1)
公开这些网址没有任何问题。 REST没有强制要求任何关于URL的内容,它是一组与之无关的约束。其中之一是HATEOS。如果以某种方式公开这些链接以将报告状态更改为报告的资源表示的一部分,那么您将使用该约束作为实现的一部分。例如,
<report>
<id>2</id>
<link url="api/report/2/approve" rel="approve"/>
<link url="api/report/2/deny" rel="deny"/>
</report>
这将使您的API更容易被发现,这就是今天网络的运作方式。另一个限制是您需要以正确的方式使用HTTP谓词。对该链接的HTTP GET无效,因为它会更改资源的状态。 HTTP GET应该是安全的,因此它不应该改变资源的状态。 HTTP POST更适合该场景。这些是如何将不同约束应用于您的web api的一些示例,但请记住,该设计没有任何问题。
此致 巴勃罗。
答案 1 :(得分:0)
我认为您构建API的方式完全取决于您。虽然它可能不能被称为“RESTful”并且更类似于RPC,但只要您为API用户提供他们需要的功能,它真的很重要吗?
有几种不同的方法可以实现您的需求,您可以考虑许多意见和“最佳实践”,但最终只要API实现它的目标,无论您如何实施它都无关紧要。