기존 GraphiQL 서비스에서 Schema 가져오기

GiitHub APIv4의 문서를 보고 익숙한 도구인 GraphiQL Playground의docs로 schema를 확인하고 싶었지만 어떻게 하는지 잘 몰라서 간단한 방법을 총결해 봤습니다!

우선 GraphiQL의 Schema 종류입니다.

  • GraphQL SDL(Schema Definition Language)
    확장자는 입니다.graphql
  • 사람이 슈마를 쓸 때 대다수 사람들이 이걸 쓴다
  • Introspection Result
    확장자는 입니다.json
  • IntrospectionQuery처럼 긴query 결과를 쓴 파일
  • 인간은 읽기와 쓰기가 어렵다
  • GraphiQL의 Schema를 획득하는 방법


    1. 대상GraphiQL 서비스


    이번에는 GiitHub APIv4에서 schema를 얻으려고 합니다.
    https://docs.github.com/en/free-pro-team@latest/graphql

    2. 방문 영패 발행


    여기에 따라 방문 영패를 발행해 주십시오.
    https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token
    권한은 최소한으로 문제없다.

    3. get-graphiql-Sschema 설치


    이번에는 GrapgQL 패키지를 사용합니다.
    https://github.com/prisma-labs/get-graphql-schema
    다음 명령을 사용하여 설치하십시오.
    npm install -g get-graphql-schema
    

    4.schema의 획득


    get-graphil-schema를 사용하면.형식이라도제이슨 형식이든 어떤 schema든 얻을 수 있습니다.
    graphiql 형식으로 얻을 때
    get-graphql-schema -h 'Authorization=Bearer <②で取得したAccessToken>'  https://api.github.com/graphql > schema.graphql
    
    .json 형식으로 얻었을 때
    get-graphql-schema -j -h 'Authorization=Bearer <②で取得したAccessToken>'  https://api.github.com/graphql > schema.json
    

    GraphiQL의 Schema 사용 방법


    나는 로컬에서GraphiQL Playground를 시작하는 모크 서버를 사용했다.
    GraphiQL Playground를 사용하는 게 습관이 돼서요.
  • 보기 쉬운 문서
  • query와mutation
  • 쓰기 쉽다
    나한테는 편해.
    GraphiQL Playground의 mock 서버를 로컬에서 시작하려면 다음과 같이 하십시오.
    npm install -g graphql-playground-mock
    graphql-playground-mock <④で取得したschemaのファイル名>
    
    mock 서버를 시작하면 액세스http://localhost:4000/GraphiQL Playground에 액세스할 수 있습니다.
    Postman은 다른 용도로GraphiQL의query를 쓸 때도 사용할 수 있습니다.
    https://learning.postman.com/docs/sending-requests/supported-api-frameworks/graphql/

    Schema를 얻기 힘든 방법입니다.


    GraphiQL의 Schema는 IntrospectionQuery를 사용하여 확인할 수 있습니다.
    그러나 모든 Schema 정의를 얻으려면 POST 아래의 질의가 필요합니다.
    curl https://api.github.com/graphql \
      -H 'Authorization: Bearer 7af842efa2f2c92676759f97dbeb4ef7d3635909' \
      -H 'content-type: application/json' \
      --data-binary '{"operationName":"IntrospectionQuery","variables":{},"query":"query IntrospectionQuery {\n  __schema {\n    queryType {\n      name\n    }\n    mutationType {\n      name\n    }\n    subscriptionType {\n      name\n    }\n    types {\n      ...FullType\n    }\n    directives {\n      name\n      description\n      locations\n      args {\n        ...InputValue\n      }\n    }\n  }\n}\n\nfragment FullType on __Type {\n  kind\n  name\n  description\n  fields(includeDeprecated: true) {\n    name\n    description\n    args {\n      ...InputValue\n    }\n    type {\n      ...TypeRef\n    }\n    isDeprecated\n    deprecationReason\n  }\n  inputFields {\n    ...InputValue\n  }\n  interfaces {\n    ...TypeRef\n  }\n  enumValues(includeDeprecated: true) {\n    name\n    description\n    isDeprecated\n    deprecationReason\n  }\n  possibleTypes {\n    ...TypeRef\n  }\n}\n\nfragment InputValue on __InputValue {\n  name\n  description\n  type {\n    ...TypeRef\n  }\n  defaultValue\n}\n\nfragment TypeRef on __Type {\n  kind\n  name\n  ofType {\n    kind\n    name\n    ofType {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"}' \
      --compressed
    
    모드를 획득할 때 이렇게 긴 조회를 일일이 작성할 수 없으니 반드시 사용하십시오get-graphql-schema.

    좋은 웹페이지 즐겨찾기