구현: 부분 응답

다음 예는 YouTube Data API (v3)에서 부분 API 응답을 검색하는 방법을 보여줍니다.

참고: API의 시작하기 가이드에서 부분 요청 및 응답에 대한 자세한 내용을 확인할 수 있습니다.

v3 API를 사용하면 애플리케이션이 불필요한 데이터를 전송, 파싱, 저장하지 않도록 부분 리소스를 검색할 수 있으며 실제로도 필요합니다. 이를 통해 API가 네트워크, CPU, 메모리 리소스를 더 효율적으로 사용할 수 있도록 합니다.

API는 두 가지 요청 매개변수인 partfields를 지원하므로 API 응답에 포함되어야 하는 리소스 속성을 식별할 수 있습니다. part 매개변수는 리소스를 삽입하거나 업데이트하는 API 요청에서 설정해야 하는 속성도 식별합니다.

이전에 값이 있었던 리소스 속성의 값을 업데이트 요청에서 지정하지 않은 경우 다음 조건이 충족되면 기존 값은 삭제됩니다.

  • 속성의 값은 요청에 의해 수정될 수 있습니다. (예를 들어 video 리소스를 업데이트할 때 snippet.description 속성 값을 업데이트할 수 있지만 snippet.thumbnails 객체의 값은 업데이트할 수 없습니다.

  • 요청의 part 매개변수 값은 속성이 포함된 리소스 부분을 식별합니다.

예를 들어, 아래와 같이 video 리소스를 업데이트한다고 가정해 보겠습니다. (아래 표시된 모든 속성은 API를 통해 업데이트할 수 있으며 이 예시와 관련 없는 리소스 속성은 생략되었습니다.)

{
  "snippet": {
    "title": "Old video title",
    "description": "Old video description",
    "tags": ["keyword1","keyword2","keyword3"],
    "categoryId: 22
  },
  "status": {
    "privacyStatus": "private",
    "publishAt": "2014-09-01T12:00:00.0Z",
    "license": "youtube",
    "embeddable": True,
    "publicStatsViewable": True
  }
}

videos.update 메서드를 호출하고 part 매개변수 값을 snippet로 설정합니다. API 요청 본문에는 다음 리소스가 포함됩니다.

{
  "snippet": {
    "title": "New video title",
    "tags": ["keyword1","keyword2","keyword3"],
    "categoryId: 22
  }
}

이 요청을 실행하면 동영상 제목이 업데이트되고, 설명이 삭제되며, 태그 또는 카테고리 ID가 변경되지 않습니다. 요청이 snippet.description 속성 값을 지정하지 않아 동영상 설명이 삭제되었습니다.

part 매개변수 값이 요청이 업데이트되는 부분 중 하나로 status를 포함하지 않았으므로 status 객체의 속성은 전혀 영향을 받지 않습니다. 실제로 API 요청의 본문에 status 객체가 포함된 경우 API는 예상치 못한 부분이 요청 본문에 포함되므로 400 (Bad Request) HTTP 응답을 반환합니다.