시작하기

이 문서에서는 Google Books API를 사용하기 위해 필요한 배경 지식을 설명합니다.

소개

이 문서는 Google Books API와 상호작용할 수 있는 애플리케이션을 작성하려는 개발자를 대상으로 합니다. Google 도서의 목표는 전 세계 도서를 디지털화한다는 것입니다. Google 도서 API를 사용하여 콘텐츠를 검색하고 인증된 사용자의 개인 라이브러리를 구성하며 수정할 수도 있습니다.

시작하기 전에

Google 계정 만들기

테스트용으로 사용할 Google 계정이 있어야 합니다. 이미 테스트 계정이 있다면 준비가 완료된 것입니다. Google 도서 사용자 인터페이스를 방문하여 테스트 데이터를 설정, 수정 또는 확인할 수 있습니다.

도서에 익숙해지기

Google 도서 개념을 잘 모르는 경우 코딩을 시작하기 전에 이 문서를 읽고 사용자 인터페이스를 실험해 보세요. 이 문서에서는 사용자가 웹 프로그래밍 개념과 웹 데이터 형식에 익숙하다고 가정합니다.

요청 승인 및 애플리케이션 식별에 대해 알아보기

애플리케이션에서 비공개 데이터를 요청할 때 해당 데이터에 액세스할 수 있는 인증된 사용자가 요청을 승인해야 합니다.

특히 Google Books API의 '내 라이브러리' 아래에 있는 모든 작업은 비공개로 간주되며 인증 및 승인이 필요합니다. 또한 Google 도서 데이터를 수정하는 작업은 해당 데이터를 소유한 사용자만 수행할 수 있습니다.

애플리케이션이 공개 데이터를 요청할 때 요청을 승인할 필요는 없지만 API 키와 같은 식별자가 있어야 합니다.

요청을 승인하고 API 키를 사용하는 방법에 대한 자세한 내용은 API 사용 문서의 요청 승인 및 애플리케이션 식별을 참조하세요.

Books API 배경

도서 개념

Google 도서는 다음의 네 가지 기본 개념을 기반으로 합니다.

  • 볼륨: 볼륨은 Google 도서에서 도서나 잡지에 관해 호스팅하는 데이터를 나타냅니다. Books API의 기본 리소스입니다. 이 API의 다른 모든 리소스에는 볼륨이 포함되어 있거나 볼륨을 주석 처리할 수 있습니다.
  • 서가: 서가는 볼륨의 모음입니다. Google 도서는 각 사용자에게 사전 정의된 서가 모음을 제공합니다. 서가는 사용자가 완전히 관리하며 일부는 사용자의 활동에 따라 자동으로 채워지며 일부는 섞여 있습니다. 사용자는 볼륨이 항상 수동으로 채워지는 다른 서가를 만들거나 수정 또는 삭제할 수 있습니다. 사용자가 서가를 비공개 또는 공개로 설정할 수 있습니다.

    참고: 서가 생성 및 삭제, 서가의 개인 정보 보호 설정 수정은 현재 Google 도서 사이트를 통해서만 가능합니다.

  • 리뷰: 볼륨의 리뷰는 별표 평점 또는 텍스트를 조합한 것입니다. 사용자는 볼륨당 하나의 리뷰를 제출할 수 있습니다. 또한 외부 소스에서도 리뷰를 사용할 수 있으며 출처가 적절하게 표시됩니다.
  • 읽기 위치: 읽기 위치는 사용자 볼륨에서 마지막으로 읽은 위치를 나타냅니다. 사용자는 볼륨당 읽기 위치를 하나만 지정할 수 있습니다. 사용자가 이 볼륨을 열어본 적이 없다면 읽기 위치가 존재하지 않습니다. 읽기 위치는 단어 해상도까지 자세한 위치 정보를 저장할 수 있습니다. 이 정보는 항상 사용자에게 비공개됩니다.

Books API 데이터 모델

리소스는 고유 식별자가 있는 개별 데이터 항목입니다. Books API는 위에서 설명한 개념을 기반으로 두 가지 유형의 리소스에서 작동합니다.

  • 볼륨 리소스: 볼륨을 나타냅니다.
  • Bookshelf 리소스: 특정 사용자의 단일 서가를 나타냅니다.

Books API 데이터 모델은 컬렉션이라고 하는 리소스 그룹을 기반으로 합니다.

볼륨 수집
볼륨 컬렉션은 Google 도서에서 관리하는 모든 볼륨 리소스 모음입니다. 따라서 모든 볼륨 리소스를 나열할 수는 없지만 일련의 검색어와 일치하는 모든 볼륨을 나열할 수는 있습니다.
서가 컬렉션
서가 컬렉션은 Google 도서에서 관리하는 모든 서가 리소스로 구성됩니다. 서가는 항상 특정 사용자 라이브러리의 컨텍스트에서 참조되어야 합니다. 서가는 0개 이상의 볼륨을 포함할 수 있습니다.

Google은 각 사용자에게 다음과 같이 사전 정의된 서가를 제공합니다.

  • 즐겨찾기: 변경 가능한 책장
  • 구매함: 사용자가 구매한 수량으로 채워집니다. 사용자는 볼륨을 수동으로 추가하거나 삭제할 수 없습니다.
  • 읽기: 변경 가능한 서가
  • 독서: 변경 가능한 서가.
  • 읽음: 변경 가능한 서가
  • 검토됨: 사용자가 검토한 자료로 채워집니다. 사용자는 볼륨을 수동으로 추가하거나 삭제할 수 없습니다.
  • 최근에 본 항목: 사용자가 최근에 웹 리더에서 연 볼륨으로 채워집니다. 사용자가 직접 볼륨을 추가할 수 없습니다.
  • 내 eBook: 변경 가능한 책장 구매한 도서는 자동으로 추가되지만 수동으로 삭제할 수 있습니다.
  • 추천 도서: 맞춤 볼륨 추천으로 채워집니다. 사용자를 위한 추천이 없다면 이 서가는 존재하지 않습니다.

서가 예시:

  • '즐겨찾기'
    • '해리 포터'
  • '내 eBook'
    • "전환"
    • "Twilight"
    • "The Girl with the Dragon Tattoo"

Books API 작업

다음 표에 설명된 대로 Books API의 컬렉션 및 리소스에서 서로 다른 5가지 메서드를 호출할 수 있습니다.

작업 설명 REST HTTP 매핑
list 컬렉션 내의 지정된 리소스 하위 집합을 나열합니다. 컬렉션 URI의 GET
삽입 컬렉션에 새 리소스를 삽입합니다 (새 리소스 만들기). 컬렉션 URI의 POST: 새 리소스의 데이터를 전달합니다.
가져오기 특정 리소스를 가져옵니다. 리소스 URI의 GET
업데이트 특정 리소스를 업데이트합니다. 업데이트된 리소스에 대한 데이터를 전달하는 리소스 URI의 PUT
delete 특정 리소스를 삭제합니다. 리소스 URI의 DELETE. 삭제할 리소스의 데이터를 전달합니다.

다양한 유형의 리소스에 지원되는 작업은 아래 표에 요약되어 있습니다. 사용자의 비공개 데이터에 적용되는 작업을 '내 라이브러리' 작업이라고 부르며, 이 모든 작업에 인증이 필요합니다.

리소스 유형
지원되는 작업
목록 삽입 get 업데이트 삭제
볼륨 예*
서가 예* 예, 인증됨 예* 예, 인증됨 예, 인증됨
읽기 위치 예, 인증됨 예, 인증됨 예, 인증됨 예, 인증됨

*이러한 작업의 AUTHENT 버전과 인증되지 않은 버전을 모두 사용할 수 있습니다. 이 경우 인증된 요청은 사용자의 비공개 '내 라이브러리' 데이터에서 작동하고 인증되지 않은 요청은 공개 데이터만 작동합니다.

통화 스타일

API를 호출하는 방법에는 여러 가지가 있습니다.

REST

REST는 데이터 요청 및 수정에 대한 간편하고 일관성 있는 접근 방식을 제공하는 소프트웨어 아키텍처 스타일입니다.

REST는 'Representational State Transfer'의 줄임말로, Google API의 맥락에서 REST는 HTTP 동사를 사용하여 Google이 저장한 데이터 표현을 검색 및 수정하는 방법을 의미합니다.

RESTful 시스템에서는 리소스가 데이터 저장소에 저장되고, 클라이언트는 서버에서 특정 작업(리소스 생성, 검색, 업데이트, 삭제 등)을 수행하라는 요청을 전송하며, 서버는 작업을 수행하고 응답을 전송합니다. 이 응답은 지정된 리소스 표현의 형식을 취하는 경우가 많습니다.

Google의 RESTful API에서는 클라이언트가 POST, GET, PUT, DELETE 등의 HTTP 동사를 사용하여 작업을 지정합니다. 리소스를 다음과 같은 형식의 고유한 URI로 지정합니다.

https://www.googleapis.com/apiName/apiVersion/resourcePath?parameters

모든 API 리소스에는 HTTP에서 액세스할 수 있는 고유 URI가 있으므로 REST는 데이터 캐싱을 지원하며 웹의 분산형 인프라와의 연동성이 뛰어납니다.

HTTP 1.1 표준 문서의 메서드 정의를 확인하면 유용합니다. 문서에 GET, POST, PUT, DELETE의 사양이 포함되어 있습니다.

Books API의 REST

지원되는 도서 작업은 도서 API 작업에 설명된 대로 REST HTTP 동사에 직접 매핑됩니다.

Books API URI의 구체적인 형식은 다음과 같습니다.

https://www.googleapis.com/books/v1/{collectionName}/resourceID?parameters

여기서 resourceID는 볼륨 또는 서가 리소스의 식별자이고 parameters은 쿼리에 적용할 매개변수입니다. 자세한 내용은 쿼리 매개변수 참조를 확인하세요.

resourceID 경로 확장 프로그램의 형식을 통해 현재 작업 중인 리소스를 식별할 수 있습니다. 예를 들면 다음과 같습니다.

https://www.googleapis.com/books/v1/volumes
https://www.googleapis.com/books/v1/volumes/volumeId
https://www.googleapis.com/books/v1/mylibrary/bookshelves
https://www.googleapis.com/books/v1/mylibrary/bookshelves/shelf
https://www.googleapis.com/books/v1/mylibrary/bookshelves/shelf/volumes
...

URI에 mylibrary가 있는 작업은 현재 인증된 사용자의 비공개 라이브러리 데이터에만 적용됩니다. API에서 지원되는 각 작업에 사용되는 전체 URI 집합은 도서 API 참조 문서에 요약되어 있습니다.

다음은 도서 API에서 이 기능이 작동하는 방식의 몇 가지 예입니다.

퀼트 검색을 수행합니다.

GET https://www.googleapis.com/books/v1/volumes?q=quilting

볼륨 s1gVAAAAYAAJ에 관한 정보를 확인하세요.

GET https://www.googleapis.com/books/v1/volumes/s1gVAAAAYAAJ

자바스크립트의 REST

자바스크립트에서 REST (JSON-P라고도 함)를 사용하여 callback 쿼리 매개변수와 콜백 함수를 사용하여 Books API를 호출할 수 있습니다. 이렇게 하면 서버 측 코드를 작성하지 않고도 도서 데이터를 표시하는 리치 애플리케이션을 작성할 수 있습니다.

참고: access_token 매개변수를 사용하여 OAuth 2.0 토큰을 전달하면 인증된 메서드를 호출할 수 있습니다. 자바스크립트에 사용할 OAuth 2.0 토큰을 얻으려면 클라이언트 측 웹 애플리케이션용 OAuth 2.0에 설명된 안내를 따르세요. API 콘솔의 'API 액세스' 탭에서 웹 애플리케이션의 클라이언트 ID를 설정하고 토큰을 가져올 때 OAuth 2.0 사용자 인증 정보를 사용해야 합니다.

다음 예에서는 이 방법을 사용하여 '해리 포터'에 대한 검색결과를 표시합니다.

<html>
  <head>
    <title>Books API Example</title>
  </head>
  <body>
    <div id="content"></div>
    <script>
      function handleResponse(response) {
      for (var i = 0; i < response.items.length; i++) {
        var item = response.items[i];
        // in production code, item.text should have the HTML entities escaped.
        document.getElementById("content").innerHTML += "<br>" + item.volumeInfo.title;
      }
    }
    </script>
    <script src="https://www.googleapis.com/books/v1/volumes?q=harry+potter&callback=handleResponse"></script>
  </body>
</html>

데이터 형식

JSON

JSON(JavaScript Object Notation)은 특정 언어에 의존하지 않는 일반적인 데이터 형식으로, 임의의 데이터 구조를 간단한 텍스트로 표현할 수 있습니다. 자세한 내용은 json.org를 참조하세요.