【问题标题】:Field Type missing from Contentful APi responseContentful APi 响应中缺少字段类型
【发布时间】:2017-10-26 01:23:15
【问题描述】:

我已经设置我的应用程序使用内容 SDK 使用内容交付 API,直到现在我意识到 内容模型中每个字段的 fieldType API 响应中缺少 >。 我错过了什么吗?我将在下面提供有关 API 及其响应的更多详细信息 -

API response

问题是,如果我不知道字段类型,我将不得不要求内容编写者坚持使用特定的模板和字段顺序,而不是在解析响应时动态呈现字段。

请帮忙!

【问题讨论】:

    标签: contentful


    【解决方案1】:

    您没有在响应中获得字段类型,但您确实获得了内容类型 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 调用来获取您想要的信息。

    【讨论】:

    • 谢谢@Robban。这是内容团队的疏忽吗?因为动态渲染将是渲染内容数据的首选,并且只需要 fieldType,我们可以只读取 fieldType 并在客户端上渲染适当的组件,开发人员使用这个不必担心模型包含的内容。不过谢谢你的澄清。
    • 不客气。不,我不会认为这是疏忽。我刚刚意识到,如果您真的想要,实际上有一种方法可以获取字段类型。我会用这个更新答案。
    • 是的@Robban 试过了,那个端点的缺点是它不会为我解析链接,所以如果我在我的模型中有对其他内容模型的引用,我将不得不单独调用来检索每个与其不可行的 linkType id 链接,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2021-01-07
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多