Импорт JSON данных в Storyblok с помощью API


Использование API управления Storyblok

API управления Storyblok организован по принципу REST. Наш API имеет предсказуемые, ориентированные на ресурсы URL-адреса и использует коды ответа HTTP для указания ошибок API. Мы используем встроенные функции HTTP, такие как параметры запроса HTTP и глаголы HTTP, которые понимаются готовыми клиентами HTTP. Мы поддерживаем кросс-оригинальный обмен ресурсами, что позволяет вам безопасно взаимодействовать с нашим API из веб-приложения на стороне клиента (хотя вы никогда не должны раскрывать свой секретный ключ API в коде на стороне клиента публичного веб-сайта). Все ответы API, включая ошибки, возвращаются в формате JSON, хотя наши библиотеки API преобразуют ответы в соответствующие объекты, специфичные для конкретного языка.

Истории
Конечная точка stories позволит вам управлять всеми записями контента вашего пространства Storyblok. Вы можете использовать ее для импорта, экспорта или изменения контента.

Вы можете создать историю с помощью REST API

Storyblok.post('spaces/606/stories/', {
  "story": {
    "name": "Story Name",
    "slug": "story-name",
    "content": {
      "component": "page",
      "body": []
    }
  },
  "publish": 1
}).then(response => {
  console.log(response)
}).catch(error => { 
  console.log(error)
})
Вход в полноэкранный режим Выйти из полноэкранного режима

Например, выше кодирование с помощью Javascript.

Вы также можете легко сделать это с помощью CURL.

Что-то вроде этого.

curl "https://mapi.storyblok.com/v1/spaces/606/stories/" 
-X POST 
-H "Content-Type: application/json" 
-H "Authorization: YOUR_OAUTH_TOKEN" 
-d "{"story":{"name":"Story Name","slug":"story-name","content":{"component":"page","body":[]}},"publish":1}"
Войти в полноэкранный режим Выйти из полноэкранного режима

Вы также можете создавать, обновлять, удалять компоненты. Например, ниже показано, как создать компонент в Storyblok с помощью API

Storyblok.post('spaces/656/components/', {
  "component": {
    "name": "teaser",
    "display_name": "Teaser",
    "schema": {
      "title": {
        "type": "text",
        "pos": 0
      },
      "image": {
        "type": "image",
        "pos": 1
      }
    },
    "is_root": false,
    "is_nestable": true
  }
}).then(response => {
  console.log(response)
}).catch(error => { 
  console.log(error)
})
Войти в полноэкранный режим Выйти из полноэкранного режима

Давайте прочитаем JSON-файл и импортируем его в Storyblok.

Я использую nodejs для импорта, поэтому сначала убедитесь, что установили пакет

затем

// Initialize the client with the oauth token
const Storyblok = new StoryblokClient({
  oauthToken: '<yourPersonalToken>', // can be found in your My account section
})
Войти в полноэкранный режим Выйти из полноэкранного режима

Добавьте конфигурацию Storyblok

const config = {
  spaceId: '<SpaceId', // can be found in the space settings.
  parentFolder: '<parentFolder>', // navigate into your folder and copy the id from the URL at app.storyblok.com <- last one
}
Войдите в полноэкранный режим Выйти из полноэкранного режима

Затем

Прочитайте json-файл с помощью модуля fs.
не забудьте createReadStream, если json-файл большой.

const data = fs.createReadStream('data.json')

Войдите в полноэкранный режим Выход из полноэкранного режима
data
  .on('data', function (data) {{
     data = JSON.parse(data)
     Object.entries(data).forEach(([key, value]) => {
     const story = {
        slug:value.slug,
        name: value.name,
        parent_id: config.parentFolder,
        content: {
          component: 'partner',
          name: value.name,
          description: value.content.en,
          description__i18n__de: value.content.de // if you have i18n.
       }



   Storyblok.post(`spaces/${config.spaceId}/stories/`, {
        story,
      })
        .then((res) => {
          console.log(`Success: ${res.data.story.name} was created.`)
        })
        .catch((err) => {
          console.log(`Error: ${err}`)
        })
    })
  })
})
Войдите в полноэкранный режим Выход из полноэкранного режима

Оцените статью
Procodings.ru
Добавить комментарий