AWS AppSync and kintone REST API GraphQL Query Sample

12000 단어 REST-APIAppSynckintone
AWS AppSync와 kintone REST API를 연결하여 kintoone 레코드의 샘플을 가져옵니다.
※ 제작 및 삭제 기록은 없습니다.

컨디션

  • mac
  • AWS AppSync
  • kintone
  • 대상

  • AWS AppSync에서 REST API 데이터 소스에 연결하는 방법
  • AppSync 콘솔에서 온 Sync 구해기의 기본 제작 방법을 알고 싶은 사람
  • 킨톤 REST API와 AppSync를 연결하는 방법을 알고 싶은 사람
  • 전제 조건

  • AWS가 있는 계정
  • AppSync의 기본 작동 이해
  • 킨톤 REST API에 대한 기본 지식
  • 데이터베이스


    AppSync에서 연결된 개체 kintone 응용 프로그램의 설정은 다음과 같습니다.
  • owner 문자열(1줄)
  • name 문자열(1줄)
  • description 문자열(1줄)
  • id기록번호
  • createdAt 제작 시간
  • 업데이트 dAt 업데이트 시간
  • ※ 필드 코드와 필드 이름은 같습니다.

    AppSync API 만들기


    AppSync 콘솔에서 API 만들기 를 선택합니다.

    처음부터 구성 선택

    API 이름 입력 - 생성

    편집 모드 선택

    입력 모드 - 저장 모드 선택

    샘플 모드

    type DateTime {
        type: FiledType
        value: AWSDateTime
    }
    
    type Description {
        type: FiledType
        value: String
    }
    
    enum FiledType {
        RECORD_NUMBER
        SINGLE_LINE_TEXT
        CREATED_TIME
        UPDATED_TIME
    }
    
    type Name {
        type: FiledType
        value: String!
    }
    
    type Note {
        id: RecordNumber
        owner: Owner
        name: Name
        description: Description
        createdAt: DateTime
        updatedAt: DateTime
    }
    
    type Owner {
        type: FiledType
        value: String
    }
    
    type Query {
        singleNote(id: ID!): Record
        listNotes: Records
    }
    
    type Record {
        record: Note
    }
    
    type RecordNumber {
        type: FiledType
        value: ID!
    }
    
    type Records {
        records: [Note]
    }
    
    schema {
        query: Query
    }
    

    데이터 소스 생성


    AppSync에 연결된 데이터 소스에서 HTTP를 선택합니다.
    데이터 소스 만들기 를 선택합니다.

    데이터 원본 형식 설정'HTTP 단점','HTTP 단점'설정kintone의 하위 영역 URL →'제작'선택

    데이터 소스 만들기

    해결자 작성


    메뉴에서 모드를 선택하고Query 파서에서 부착기를 선택하십시오
    데이터 원본 이전 단계에서 만든 데이터 원본 선택

    맵 템플릿 만들기


    GraphiQL 질의를 HTTP 형식으로 변환하는 매핑 템플릿을 작성합니다.

    템플릿 매핑 요청

  • <App ID>...kintoone 애플리케이션 ID
  • <API Token>...kintoone 어플리케이션의 API 토큰
  • {
      "version": "2018-05-29",
      "method": "GET",
      "resourcePath": "/k/v1/record.json",
      "params":{
          "query":{"app": "<App ID>", "id": $context.arguments.id },
          "headers": {
              "X-Cybozu-API-Token": "<API Token>"
          }
      }
    }
    

    응답 맵 템플릿

    $ctx.result.body
    

    listNotes 요청 맵 템플릿

  • <App ID>...kintoone 애플리케이션 ID
  • <API Token>...kintoone 어플리케이션의 API 토큰
  • {
      "version": "2018-05-29",
      "method": "GET",
      "resourcePath": "/k/v1/records.json",
      "params":{
          "query":{"app": "<APP ID>"},
          "headers": {
              "X-Cybozu-API-Token": "<API Token>"
          }
      }
    }
    

    listNotes 응답 맵 템플릿

    #if($ctx.error)
      $util.error($ctx.error.message, $ctx.error.type)
    #end
    ## If the response is not 200 then return an error. Else return the body **
    #if($ctx.result.statusCode == 200)
        $ctx.result.body
    #else
        $utils.appendError($ctx.result.body, "$ctx.result.statusCode")
    #end
    

    GraphiQL 질의 작성


    GraphiQL 질의를 작성하고 테스트합니다.

    singleNote


    조회

    query MyQuery {
      singleNote(id: 1) {
        record {
          id {
            value
          }
          name {
            value
          }
          description {
            value
          }
        }
      }
    }
    

    실행 결과

    {
      "data": {
        "singleNote": {
          "record": {
            "id": {
              "value": "1"
            },
            "name": {
              "value": "1/10 やること"
            },
            "description": {
              "value": "部屋の片付け"
            }
          }
        }
      }
    }
    

    listNotes


    조회

    query MyQuery {
      singleNote(id: 1) {
        record {
          id {
            value
          }
          name {
            value
          }
          description {
            value
          }
        }
      }
      listNotes {
        records {
          id {
            value
          }
          name {
            value
          }
          description {
            value
          }
        }
      }
    }
    

    실행 결과

    {
      "data": {
        "singleNote": {
          "record": {
            "id": {
              "value": "1"
            },
            "name": {
              "value": "1/10 やること"
            },
            "description": {
              "value": "部屋の片付け"
            }
          }
        },
        "listNotes": {
          "records": [
            {
              "id": {
                "value": "29"
              },
              "name": {
                "value": "2/1 やること"
              },
              "description": {
                "value": "燃えるゴミ"
              }
            },
    ・・・略
            {
              "id": {
                "value": "2"
              },
              "name": {
                "value": "1/10 やること"
              },
              "description": {
                "value": "図書館で本を借りる"
              }
            },
            {
              "id": {
                "value": "1"
              },
              "name": {
                "value": "1/10 やること"
              },
              "description": {
                "value": "部屋の片付け"
              }
            }
          ]
        }
      }
    }
    

    디버그 로그


    디버깅을 위해 메뉴 설정에서 로깅 - 로그 사용 을 선택합니다.

    CloudWatch에서 로그를 내보냅니다.

    참고 자료

    좋은 웹페이지 즐겨찾기