API를 사용하여 JSON 데이터를 Storyblok으로 가져오기

Storyblok 관리 API 사용



Storyblok 관리 API는 REST를 중심으로 구성됩니다. API에는 예측 가능한 리소스 지향 URL이 있으며 HTTP 응답 코드를 사용하여 API 오류를 나타냅니다. 우리는 기성 HTTP 클라이언트가 이해하는 HTTP 쿼리 매개 변수 및 HTTP 동사와 같은 기본 제공 HTTP 기능을 사용합니다. 우리는 원본 간 리소스 공유를 지원하므로 클라이언트 측 웹 애플리케이션에서 API와 안전하게 상호 작용할 수 있습니다(공개 웹 사이트의 클라이언트 측 코드에 비밀 API 키를 노출해서는 안 됨). API 라이브러리가 응답을 적절한 언어별 객체로 변환하더라도 JSON은 오류를 포함한 모든 API 응답에서 반환됩니다.

이야기
스토리 엔드포인트를 사용하면 Storyblok 공간의 모든 콘텐츠 항목을 관리할 수 있습니다. 이를 사용하여 콘텐츠를 가져오거나 내보내거나 수정할 수 있습니다.

REST API를 사용하여 Story를 만들 수 있습니다.

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}"


또한 구성 요소를 생성, 업데이트, 삭제합니다. 예를 들어 API를 사용하여 Storyblok에서 구성 요소를 생성하려면 다음과 같이 하십시오.

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를 사용하므로 먼저 패키지를 설치해야 합니다.yarn add storyblok-js-client 또는 npm i storyblok-js-client
그 다음에const StoryblokClient = require('storyblok-js-client')
// 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
}


그 다음에
fs 모듈을 사용하여 json 파일을 읽습니다.
json 파일이 큰 경우 createReadStream에 있는지 확인하십시오.

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}`)
        })
    })
  })
})

좋은 웹페이지 즐겨찾기