GitHub GraphQL API로 리포지토리 콘텐츠 유효성 검사

먼저 쿼리가 무엇인지 살펴보고 각 표현의 의미와 정보를 처리하는 방법을 부분별로 설명하겠습니다.



query($owner: String!, $repositoryName: String!) {
  repository(owner: $owner, name: $repositoryName) {
    packageJson: object(expression: "HEAD:package.json") {
      ... on Blob {
        byteSize,
        text
      }
    }
  }
}


매우 간단하지 않습니까?

이 쿼리는 저장소의 소유자인 ownerrepositoryName 를 쿼리 변수로 사용합니다.

우선 저장소 정보에 액세스해야 합니다. 정보를 얻기 위해 쿼리를 호출하면 object를 얻을 수 있습니다. 이 필드는 우리가 해야 할 파일의 경로를 지정하는 표현식을 허용합니다. 이 경우 HEAD:package.json 를 확인하지만 원하는 위치에 있을 수 있습니다(형식은 ${branch}:${pathFile} 입니다).

그런 다음 byteSize(파일 크기라고도 함, 존재하지 않는 경우 null) 및 텍스트(콘텐츠 파일이라고도 함)를 포함하는 이 개체의 Blob을 가져와야 합니다.

그리고 그게 다야!

이 쿼리를 통해 우리는 다음과 같은 것을 얻을 수 있습니다.

{
  "data": {
    "repository": {
      "packageJson": {
        "byteSize": 719,
        "text": "{\n  \"name\": \"test-repo\",\n  \"version\": \"1.0.0\",\n  \"author\": \"\",\n  \"copyright\": \"\",\n  \"scripts\": {\n    \"dev\": \"zuplo dev\",\n    \"build\": \"zuplo build\",\n    \"test\": \"zuplo test\",\n    \"postinstall\": \"husky install\"\n  },\n  \"dependencies\": {\n    \"devDependencies\": {\n    \"husky\": \"^7.0.4\"\n  },\n  \"packageManager\": \"[email protected]\"\n  }\n}"
      }
    }
  }
}


또는 파일이 존재하지 않는 경우

{
  "data": {
    "repository": {
      "packageJson": null
    }
  }
}

좋은 웹페이지 즐겨찾기