【发布时间】:2017-10-26 01:23:15
【问题描述】:
我已经设置我的应用程序使用内容 SDK 使用内容交付 API,直到现在我意识到 内容模型中每个字段的 fieldType API 响应中缺少 >。 我错过了什么吗?我将在下面提供有关 API 及其响应的更多详细信息 -
问题是,如果我不知道字段类型,我将不得不要求内容编写者坚持使用特定的模板和字段顺序,而不是在解析响应时动态呈现字段。
请帮忙!
【问题讨论】:
标签: contentful
我已经设置我的应用程序使用内容 SDK 使用内容交付 API,直到现在我意识到 内容模型中每个字段的 fieldType API 响应中缺少 >。 我错过了什么吗?我将在下面提供有关 API 及其响应的更多详细信息 -
问题是,如果我不知道字段类型,我将不得不要求内容编写者坚持使用特定的模板和字段顺序,而不是在解析响应时动态呈现字段。
请帮忙!
【问题讨论】:
标签: contentful
您没有在响应中获得字段类型,但您确实获得了内容类型 ID。您应该已经知道特定内容类型包含什么类型的字段。
可以在每个条目的 sys.contentType.sys.id 属性中找到内容类型 ID。有了这些信息,您可以选择要呈现的模板。
如果您仍然需要根据字段的类型动态决定如何呈现,您将不得不求助于typeof 运算符来检查每个字段的类型。您将失去区分特定 Contentful 属性的可能性,因为它们都将返回为 object。
您还可以调用内容类型端点以从 Contentful API 获取整个内容模型。 http://cdn.contentful.com/spaces/space-id/content_types/
这将为您提供每个内容类型包含的字段以及以下结构中每个字段的类型:
{
"sys": {
// sys properties
},
"displayField": "productName",
"name": "Product",
"description": null,
"fields": [
{
"id": "productName",
"name": "Product name",
"type": "Text",
"localized": true,
"required": true,
"disabled": false,
"omitted": false
},
{
"id": "slug",
"name": "Slug",
"type": "Symbol",
"localized": false,
"required": false,
"disabled": false,
"omitted": false
},
// further fields
]
}
这会导致多次 API 调用来获取您想要的信息。
【讨论】: