contentful - 使用 Contentful 检索内容类型的更友好方式

标签 contentful

我正在评估 Contentful.com 作为 Angular SPA 的内容引擎。

我面临的问题是按内容类型检索条目(例如,获取“博客”类型的所有条目)。如 documentation example 中所述,这是按如下方式完成的:

/spaces/spaceid/entries?access_token=token&content_type=cat



所以在我的情况下,而不是“cat”, content_type="blog"或 content_type="news"将是我期望的交互方式。

我面临的现实是,通过 content_type 检索内容不允许我使用我的内容类型的名称 - 它期望 ID 是一个丑陋的 GUID,所以我的查询看起来像这样:

/spaces/spaceid/entries?access_token=token&content_type=2wKn6yEnZewu2SCCkus4as



这样做的麻烦在于:
  • 对开发人员不友好
  • 不能跨环境移植(即测试空间和生产空间)

  • 我目前能看到的唯一解决方案是在页面加载时预先检索内容类型到 id 映射并使用它 - 但它对性能来说不会那么好。

    该文档似乎总是使用友好可读的内容类型 ID(例如 cat),但这不是我的经验。

    所以,要解决这个问题,有没有:
  • 一种将内容类型设置为具有友好 ID 的方法?或
  • 一种使用不同的查询参数按名称检索条目的方法?
  • 最佳答案

    我曾经有同样的问题,基本上是为了内容类型的预检索,然后是创建一个将名称转换为 if 的小 map 。性能还不错,因为在应用程序启动时只执行一次。 Contentful 还使用 CDN,这使得响应几乎是即时的。

    不管怎样,这是个好消息:虽然你不能通过 Contentful 的用户界面定义内容类型的 ID,你完全可以通过他们的 API 通过 curl 来做到这一点(你也可以使用各种 SDK):

    curl -H 'Authorization: Bearer <access-token>' \ 
      -X PUT \
      -d '{"name": "Blog", "fields": [{"name":"Name","id":"name","type":"Symbol"}]}' \
      https://api.contentful.com/spaces/<spaceId>/content_types/blog
    

    这将创建一个 ID 为“blog”的内容类型,其中包含一个字段“name”。一旦您创建了这样的内容类型,您也可以直接转到用户界面并向其中添加更多字段。

    关于contentful - 使用 Contentful 检索内容类型的更友好方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32365194/

    相关文章:

    javascript - 带有 Contentful 和 Node 的 Webhook

    javascript - 内容导出服务器错误

    java - contentful - 使用 JAVA SDK 检索条目的所有翻译?

    javascript - 如何设置 contentful.js api 调用 rateLimit

    javascript - 环境变量不起作用(Next.JS 9.4.4)

    javascript - 以编程方式从 Contentful 数据创建 Gatsby 页面

    javascript - 在 Angular 中显示 ContentFul RichText

    node.js - 将contentful导入到react-native中

    javascript - 如何从 Contentful 中获取单个条目并按字段值查询?

    graphql - 如何使用 Contentful 从 Gatsby 中的查询中检索发布的发布日期?