4

我正在研究 REST API,但找不到管理资源 URI 的最佳方法。当我查询我的 API 时,我想要这样的东西:

{
    'name':'foo',
    'id':100,
    'uri':'/path/to/the/resource/100'
}

我应该将资源 URI 存储在我的数据库中,还是应该在处理请求时在代码中生成?

谢谢

4

3 回答 3

1

不要将 URI 存储在数据库中。

资源的 URI 不是资源本身。此外,您无需在回复中返回 ID。客户不需要它。只需返回self任何链接资源的 URL 和 URL。

您也可能会欣赏这个答案

于 2013-08-06T15:36:24.693 回答
0

在 API 设计中,您不应该将 URI 作为 HTTP API 响应中数据的一部分返回。如果您的资源可从多个 URI 获得,则有一个标头字段,并且您的应用程序的域逻辑以及您对 URI 的良好命名应该允许猜测资源位置。

例如,如果{'name':'foo', 'id':100}是 a Foo,您(和用户)通常会期望它的 URI 是/foos/100,那么为什么需要在响应数据中返回 URI?

现在更务实的是,由于支持那些花哨的 HTTP 标头可能会使您的客户更难采用您的 API,我相信如果您希望您的资源更改 URI 很多(我希望他们没有),因此您可能更容易支持301 Moved Permanently旧的重定向。除此之外,我看不出不即时生成它们的原因,因为假设您使用的是 MVC 结构,您将不得不对手动响应旧 URI 的旧控制器操作实现重定向。

于 2013-08-06T11:39:22.083 回答
0

据我了解,您不存储 Uri,而是使用 URI 模板属性在服务方法上指定 uri 模式。例如,使用您的链接,您将拥有:

[WebGet(UriTemplate = /path/to/the/resource/{number})]
public SomeMethod(String number)
{
   Int16.Parse(number);
   //User user = UserList(number)
}
于 2013-08-06T12:43:02.867 回答