我正在评估Contentful.com作为Angular SPA的内容引擎. 我面临的问题是按内容类型检索条目(例如,获取“博客”类型的所有条目).如documentation example中所述,这样做如下: /spaces/spaceid/entries?acc
我面临的问题是按内容类型检索条目(例如,获取“博客”类型的所有条目).如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的方法?要么
>使用不同的查询参数按名称检索条目的方法?
无论如何,这是一个好消息:虽然您无法通过Contentful的用户界面定义内容类型的ID,但您可以通过curl(也可以使用各种SDK)通过其API完全实现这一点:
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”.创建这样的内容类型后,您还可以转到用户界面并为其添加更多字段.