Получить содержательную запись по идентификатору и языку - PullRequest
0 голосов
/ 25 февраля 2019

Пакет Contentful npm предоставляет доступ ко всем функциям из API.В моем случае я знаю идентификатор записи, которую я хочу, но мне нужно получить данные для локали, отличной от заданной по умолчанию, и я не вижу способа передать опцию локали.Мой запрос выглядит следующим образом:

const { createClient } = require('contentful');

const contentfulClient = createClient({
  accessToken: 'xxxxxxxx',
  space: 'xxxxxxx',
});

const entry = contentfulClient
  .getEntry('xxxxxx')
  .catch(console.error);

Я знаю, что мог бы сделать следующее:

const data = await contentfulClient
  .getEntries({
    content_type: 'xxxxxx'
    locale: 'cy',
    'sys.id': xxxxx,
  })
  .catch(console.error);

const [entry] = data.items;

Но для этого требуется тип содержимого и он возвращает массив записей, который кажется противоинтуитивным, когдаЯ знаю точную запись, которую я хочу.Я что-то пропустил?Кажется логичным ожидать этого.

1 Ответ

0 голосов
/ 01 марта 2019

В документации по API это не так , но вы можете использовать параметр locale= через API.

▶ curl -H "Authorization: Bearer $CONTENTFUL_ACCESS_TOKEN" https://cdn.contentful.com/spaces/$CONTENTFUL_SPACE_ID/entries/6wU8cSKG9UOE0sIy8Sk20G
{
  "sys": {
    "space": {
      "sys": {
        "type": "Link",
        "linkType": "Space",
        "id": "xxxx"
      }
    },
    "id": "6wU8cSKG9UOE0sIy8Sk20G",
    "type": "Entry",
    "createdAt": "2018-09-06T22:01:55.103Z",
    "updatedAt": "2018-10-08T19:26:59.382Z",
    "environment": {
      "sys": {
        "id": "master",
        "type": "Link",
        "linkType": "Environment"
      }
    },
    "revision": 14,
    "contentType": {
      "sys": {
        "type": "Link",
        "linkType": "ContentType",
        "id": "section"
      }
    },
    "locale": "en-US"
  },
  "fields": {
    "internalTitle": "test test test",
    ...

▶ curl -H "Authorization: Bearer $CONTENTFUL_ACCESS_TOKEN" https://cdn.contentful.com/spaces/$CONTENTFUL_SPACE_ID/entries/6wU8cSKG9UOE0sIy8Sk20G\?locale\=\*
{
  "sys": {
    "space": {
      "sys": {
        "type": "Link",
        "linkType": "Space",
        "id": "xxxx"
      }
    },
    "id": "6wU8cSKG9UOE0sIy8Sk20G",
    "type": "Entry",
    "createdAt": "2018-09-06T22:01:55.103Z",
    "updatedAt": "2018-10-08T19:26:59.382Z",
    "environment": {
      "sys": {
        "id": "master",
        "type": "Link",
        "linkType": "Environment"
      }
    },
    "revision": 14,
    "contentType": {
      "sys": {
        "type": "Link",
        "linkType": "ContentType",
        "id": "section"
      }
    }
  },
  "fields": {
    "internalTitle": {
      "en-US": "test test test"
    },
    ...

Документация для содержательной документацииJS клиент говорит:

Параметры:
Имя Тип Атрибуты Описание.строка идентификатора
запрос Объект необязательный.
Объект с параметрами поиска.В этом методе это полезно только для locale.

так что вы добавите локаль в качестве второго параметра к getEntry следующим образом:

const entry = contentfulClient
  .getEntry('xxxxxx', { locale: 'en-US' })
...