0

我正在构建我的第一个 API,我想知道是否 - 因为这些操作是应用程序的核心并且将被任何客户端利用 - 我应该以一种在典型 CRUD 场景之外公开操作的方式构建我的 api。我为报告准备了一些东西,但我也需要允许用户批准或拒绝报告,所以我在想这样的事情:

/api/report/id/approve
/api/report/id/deny

会有用的。这是否违反了 API 的任何标准或实践?

4

2 回答 2

1

公开这些 URL 并没有错。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 更容易被发现,这就是当今 Web 的工作方式。另一个限制是您需要以正确的方式使用 HTTP 动词。对该链接的 HTTP GET 将无效,因为它会更改资源的状态。HTTP GET 应该是安全的,因此它不应该改变资源的状态。HTTP POST 更适合这种情况。这些是您如何将不同的约束应用于您的 web api 的一些示例,但请记住,该设计没有任何问题。

问候,巴勃罗。

于 2013-03-12T14:54:55.277 回答
0

我认为你如何构建你的 API 完全取决于你。尽管它可能不能称为“RESTful”并且更类似于 RPC,但只要您为 API 用户提供他们需要的功能,这真的很重要吗?

有几种不同的方法可以实现您的要求,您可以考虑许多意见和“最佳实践”,但最终只要 API 实现了它的目标,您如何实现它并不重要。

于 2013-03-12T09:19:43.923 回答