kintone의 새로운 JS-SDK "kintone-rest-api-client"를 사용해 보았습니다.

소개



작년부터 수수하게 통지는 나왔습니다만, kintone의 새로운 JS-SDK가 ver.1.0.0으로서 드디어 정식 릴리스되었습니다 👏👏👏

@kintone/rest-api-client Ver.1.0.0
htps : // 기주 b. 코 m / 킨 토네 / js - sdk / t ree / ma s r / pa c ga s / re st - ap - c peen t

앞으로는 이 SDK가 JS-SDK에서는 주가 되기 때문에, 꼭 만져 보세요~

그래서,
나도 만져 보았으므로 그 메모를 씁니다. 몇 가지 주의점도 있었기 때문에 그것도 붙잡음으로 더합니다.

※ 뭐 사실은 작년부터 ver.0계로서는 공개는 되어 있었습니다

도구를 넣는 방법



지금까지의 SDK와 마찬가지로 npm 로 넣습니다. 리포지토리가 별도이므로 기존 JS-SDK 업데이트로 들어가지 않으므로 조심하십시오.
npm install @kintone/rest-api-client

음, 여기는 아무런 문제가 없습니다!

코드 쓰기 전에



제대로 URL이라든지 인증 키는 .envファイル 에 쓰도록 합시다.
※ 자신도 잘 코드에 직접 써 버리므로 가능한 환경 변수로 버릇을 붙이지 않으면
# dotenvモジュールのインストール
npm install dotenv

.env
# kintone settings
KINTONE_URL=https://<subdomain>.cybozu.com
KINTONE_APITOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXX

여담) dotenv 메모



조금 조사해 보면, 코드내에 require('dotenv').config(); 라고 쓰는 패턴과, 실행시에 인수에 --require dotenv/config 를 붙이는 패턴의 2 종류 있다고 한다.

PC 자체의 환경 변수라든지 AWS Lambda의 환경 변수를 사용하는 경우는 require('dotenv').config(); 는 필요 없기 때문에, 거기에 근거하면 코드내에 쓰는 것보다 인수에 붙이는 편이 좋은 것 같다. 과연.

다만 런타임에 인수를 붙이는 것을 잊을 것 같다 ~

가져오기 및 연결을 붙이는 방법



지금까지로 바뀌고 있습니다. 매우 편해졌습니다.
const { KintoneRestAPIClient } = require('@kintone/rest-api-client');

const env = process.env;
const client = new KintoneRestAPIClient({
  baseUrl: env.KINTONE_URL,
  auth: {
    apiToken: env.KINTONE_APITOKEN
  }
});

단일 객체로 URL, 인증(로그인, API 토큰, Basic) 전부 지정합니다

💡 포인트



새로운 SDK는 TypeScript 로 쓰여 있으므로 함수의 파라미터 등 무엇을 쓰면 좋은지 설명이 나옵니다. 이것이 꽤 편리! !



보완되기 때문에 일부러 문서 읽고 쓰는 방법 조사할 필요도 없음!


⚠ 주의점



아는 사람은 알겠다고 생각합니다만, 최초의 임포트시의 변수를 KintoneRestAPIClient
후보가 나오지 않는다는 것은 어딘가 잘못되어 있다는 것입니다!! 이 후보 공지는 실수의 판단에도 사용할 수 있다!
※JavaScript 분할 대입 라고 녀석이 관계하고 있습니다.

기본은 KintoneRestAPIClient 라고 쓰면 좋은 생각이 듭니다만, 아무래도 다른 변수명을 사용하고 싶은 경우는 아래와 같이 하면 됩니다.
const hoge = require('@kintone/rest-api-client').KintoneRestAPIClient;
const client = new hoge(...);



레코드 등록



보완에 몸을 맡겨 쓰면 OK!
const { KintoneRestAPIClient } = require('@kintone/rest-api-client');

const env = process.env;
const client = new KintoneRestAPIClient({
  baseUrl: env.KINTONE_URL,
  auth: {
    apiToken: env.KINTONE_APITOKEN
  }
});

client.record.addRecord({
  app: XXXX,
  record: {
    text: {
      value: 'SDK使いやすーい!'
    }
  }
}).then(resp => console.log(resp)).catch(err => console.log(err));

파일 업로드



kintone API의 파일 업로드 흐름과 마찬가지로,
  • kintone 자체에 파일을 업로드하여 fileKey 가져 오기
  • fileKey를 레코드에 저장

  • 그리고 두 번 처리를 작성합니다.

    ⚠ 주의점



    현재 SDK는 파일 경로 지정을 지원하지 않으므로 로컬 파일은 fs 모듈 등을 사용하여 Buffer로 변환 한 다음 업로드해야합니다. 뭐 거기까지 번거롭지는 않지만.
    const fs = require('fs'); // ファイル操作用のモジュールをインポート
    // 他は上で書いてるし割愛
    
    client.file.uploadFile({
      file: {
        name: 'hoge.png',
        data: fs.readFileSync('<YOUR_FILE_PATH>')
      }
    }).then(resp => {
      return client.record.addRecord({
        app: XXXX,
        record: {
          file: {
            value: [{
              fileKey: resp.fileKey
            }]
          }
        }
      });
    }).then(resp => console.log(resp)).catch(err => console.log(err));
    

    파일 다운로드



    업로드와 반대의 순서로 하면 OK입니다.
    // この部分は割愛
    
    client.record.getRecord({
      app: XXXX,
      id: XXXX
    }).then(resp => {
      return client.file.downloadFile({
        fileKey: resp.record.file.value[0].fileKey
      });
    }).then(res => {
      fs.writeFileSync('hoge.png', res);
    }).catch(err => console.log(err));
    

    결론



    아니, 보완이 있으면 굉장히 편리하네요~👏
    어쨌든 「다음 오는 것은 app 인가?

    그럼! ≧(+・` ཀ・´)≦

    좋은 웹페이지 즐겨찾기