我正在评估 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),但这不是我的经验。
所以,要解决这个问题,有没有:
最佳答案
我曾经有同样的问题,基本上是为了内容类型的预检索,然后是创建一个将名称转换为 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/