【问题标题】:Duplicated content with json:api related links带有 json:api 相关链接的重复内容
【发布时间】:2019-11-27 13:57:20
【问题描述】:

在 json:api 规范的Resource Linkage section 中,我发现你可以使用这样的 url 获取相关资源对象,http://example.com/articles/1/author,引用“id 为 1 的文章的作者”。

在站点完整示例中,我们可以看到作者的 id 为 9。

// ...
{
  "type": "articles",
  "id": "1",
  "attributes": {
    "title": "Rails is Omakase"
  },
  "relationships": {
    "author": {
      "links": {
        "self": "http://example.com/articles/1/relationships/author",
        "related": "http://example.com/articles/1/author"
      },
      "data": { "type": "people", "id": "9" }
    }
  },
  "links": {
    "self": "http://example.com/articles/1"
  }
}
// ...

所以,如果我理解它,我将能够使用两个不同的 url 请求相同的资源:

http://example.com/articles/1/author
http://example.com/authors/9

这样好吗?
这不考虑duplicate content吗?

【问题讨论】:

    标签: api duplicates json-api


    【解决方案1】:

    The article you have linked 谈论网站上下文中的重复内容。 JSON:API 规范是关于 API 的。网站通常是供人类阅读和消费的。 API 是供程序使用的。那篇文章提出的 SEO 问题不适用于 API,因为像 Google 这样的搜索引擎并不关心 API 响应。他们可能会关心基于该 API 的数据获取的网站构建。该网站应具有唯一的 URL 或 rel="canonical" 属性。

    【讨论】:

    • 好的,我知道这与 SEO 和网站重复内容无关,但是,可以将这两个 url 用于完全相同的资源吗?或者是否有任何 API 规则鼓励我们避免这种做法?
    • 规范建议使用两个 URL。有些人可能会争辩说这不是一个完全 RESTful 的设计,但我会更关注它提供解决方案的问题:客户端不必知道相关资源的 ID 即可获取它们。因此,API 可能不需要首先从数据库中加载这些 ID,而是包含一个关系链接。这可能会带来巨大的性能提升。
    猜你喜欢
    • 2023-04-02
    • 2019-10-03
    • 2011-01-03
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2013-04-30
    相关资源
    最近更新 更多