이 문서에서는 Blogger API를 사용하는 방법을 설명합니다.
시작하기 전에
Google 계정 만들기
Google 계정이 설정되어 있는지 확인합니다. 실수로 인한 데이터 손실을 방지하려면 개발 및 테스트 목적으로 별도의 Google 계정을 사용하는 것이 좋습니다. 테스트 계정이 있다면 모두 완료된 것입니다. Blogger 사용자 인터페이스를 방문하여 테스트 데이터를 설정, 수정 또는 확인할 수 있습니다.
Blogger에 익숙해지기
Blogger 개념에 익숙하지 않은 경우 이 문서를 읽고 코딩을 시작하기 전에 사용자 인터페이스를 사용해 보세요. 이 문서에서는 사용자가 Blogger, 웹 프로그래밍 개념 및 웹 데이터 형식에 익숙하다고 가정합니다.
요청 승인 및 애플리케이션 식별에 대해 알아보세요.
애플리케이션에서 비공개 데이터를 요청할 때는 해당 데이터에 액세스할 수 있는 인증된 사용자가 요청을 승인해야 합니다.
애플리케이션에서 공개 데이터를 요청하는 경우 요청을 승인할 필요는 없지만 API 키와 같은 식별자가 있어야 합니다.
요청을 승인하고 API 키를 사용하는 방법에 대한 자세한 내용은 API 사용 문서의 요청 승인 및 애플리케이션 식별을 참조하세요.
Blogger API 배경
Blogger 개념
Blogger는 다섯 가지 기본 개념을 기반으로 합니다.
- 블로그: API의 루트 개념입니다. 블로그에는 게시물과 페이지가 있습니다. 블로그 이름 및 설명과 같은 블로그 메타 정보의 컨테이너입니다.
- 게시물: 블로그 게시물은 블로그 작성자가 만든 게시 가능한 항목입니다. 이 정보는 저자들이 지금 전 세계에 게시하고자 하는 내용을 반영하는 시의적절하게 제공해야 합니다. 시간이 지나면서 블로그 게시물은 오래되고 관련성이 떨어지는 것으로 알려져 있습니다.
- 댓글: 댓글은 블로그 게시물 작성자 이외의 사람들이 작성자가 작성한 내용에 반응하는 곳입니다. 벽돌부터 꽃다발까지 무엇이든 가능합니다.
- 페이지: 페이지는 약력 정보나 사용자에게 연락하는 방법과 같은 정적 콘텐츠를 위한 공간입니다. 이는 일반적으로 자주 변경되지 않는 영원한 정보입니다.
- 사용자: 사용자란 작성자, 관리자 또는 독자로서 Blogger와 상호작용하는 사람입니다. 공개 블로그는 독자가 익명일 수 있지만 비공개 블로그에서는 Blogger가 독자를 식별해야 합니다.
Blogger API 데이터 모델
리소스는 고유 식별자를 갖는 개별 데이터 항목입니다. Blogger JSON API는 5가지 유형의 리소스에서 작동합니다.
- 블로그 리소스: 블로그를 나타냅니다.
- Posts 리소스: 게시물을 나타냅니다. 각 게시물 리소스는 블로그 리소스의 하위 요소입니다.
- 댓글 리소스: 특정 게시물의 댓글을 나타냅니다. 각 댓글 리소스는 게시물 리소스의 하위 요소입니다.
- 페이지 리소스: 정적 페이지를 나타냅니다. 각 페이지 리소스는 블로그 리소스의 하위 요소입니다.
- 사용자 리소스: 비익명 사용자를 나타냅니다. 페이지, 게시물 또는 댓글의 작성자를 식별하는 데 사용됩니다.
![블로그 리소스에는 두 가지 하위 리소스 유형(페이지 및 게시물)이 있습니다.
게시물 리소스에는 댓글 리소스 하위 요소가 있을 수 있습니다.](https://developers-dot-devsite-v2-prod.appspot.com/static/blogger/docs/3.0/blogs-posts-comments.png?authuser=0000&hl=ko)
Blogger API 데이터 모델은 컬렉션이라는 리소스 그룹을 기반으로 합니다.
- 블로그 컬렉션
- <span="apicollection">블로그 컬렉션은 사용자가 액세스 권한이 있는 모든 블로그로 구성됩니다. 블로그를 사용자별로 나열하거나 ID로 단일 블로그를 검색할 수 있습니다.</span="apicollection">
- 게시물 모음
- 게시물 컬렉션은 특정 블로그 리소스 내의 모든 게시물 리소스로 구성됩니다.
- 댓글 모음
- 댓글 컬렉션은 특정 게시물 리소스 내의 모든 댓글 리소스로 구성됩니다.
- 페이지 컬렉션
- 페이지 컬렉션은 특정 블로그 리소스 내의 모든 페이지 리소스로 구성됩니다.
- 사용자 컬렉션
- 사용자 컬렉션은 Blogger의 모든 사용자 리소스로 구성되므로 나열할 수 없습니다. 사용자는 ID 또는
self
식별자를 사용하여 자신의 사용자 리소스(다른 사람의 리소스 제외)를 검색할 수 있습니다.
Blogger API 작업
다음 표에 설명된 대로 Blogger API의 컬렉션 및 리소스에 다양한 메서드를 호출할 수 있습니다.
작업 | 설명 | REST HTTP 매핑 |
---|---|---|
list | 컬렉션 내의 모든 리소스를 나열합니다. | 컬렉션 URI의 GET |
get | 특정 리소스를 가져옵니다. | 리소스 URI의 GET |
getByUrl | 리소스를 가져와 URL로 조회합니다. | GET 을 매개변수로 전달된 URL로 바꿉니다. |
getByPath | 경로를 기준으로 검색하여 리소스를 가져옵니다. | GET 를 매개변수로 전달된 경로로 바꿉니다. |
listByUser | 사용자가 소유한 리소스를 나열합니다. | 사용자가 소유한 컬렉션에 대한 GET 권한 |
search | 쿼리 매개변수를 기준으로 리소스를 검색합니다. | 검색 URL의 GET (검색어가 매개변수로 전달됨) |
insert | 컬렉션에 리소스를 만듭니다. | 컬렉션 URI의 POST |
삭제 | 리소스를 삭제합니다. | 리소스 URI의 DELETE |
patch | 패치 시맨틱스를 사용하여 리소스를 업데이트합니다. | 리소스 URI의 PATCH |
업데이트 | 리소스를 업데이트합니다. | 리소스 URI의 PUT |
아래 표는 각 리소스 유형별로 지원되는 메서드를 보여줍니다. 비공개 블로그의 모든 list 및 get 작업에는 인증이 필요합니다.
리소스 유형 |
지원되는 방법 |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|
list | 가져오기 | getByUrl | getByPath | listByUser | 검색 | 삽입 | 삭제 | 패치 | 업데이트 | |
블로그 | 아니요 | 예 | 예 | 아니요 | 예 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 |
게시물 | 예 | 예 | 아니요 | 예 | 아니요 | 예 | 예 | 예 | 예 | 예 |
설명 | 예 | 예 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 |
페이지 | 예 | 예 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 |
사용자 | 아니요 | 예 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 |
호출 스타일
API를 호출하는 방법에는 여러 가지가 있습니다.
- 직접 또는 JavaScript에서 REST를 사용 (서버 측 코드 필요 없음)
- 클라이언트 라이브러리 사용
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
의 사양이 포함되어 있습니다.
Blogger API의 REST
지원되는 Blogger 작업은 Blogger API 작업에 설명된 대로 REST HTTP 동사에 직접 매핑됩니다.
Blogger API URI의 구체적인 형식은 다음과 같습니다.
https://www.googleapis.com/blogger/v3/users/userId https://www.googleapis.com/blogger/v3/users/self https://www.googleapis.com/blogger/v3/users/userId/blogs https://www.googleapis.com/blogger/v3/users/self/blogs https://www.googleapis.com/blogger/v3/blogs/blogId https://www.googleapis.com/blogger/v3/blogs/byurl https://www.googleapis.com/blogger/v3/blogs/blogId/posts https://www.googleapis.com/blogger/v3/blogs/blogId/posts/bypath https://www.googleapis.com/blogger/v3/blogs/blogId/posts/search https://www.googleapis.com/blogger/v3/blogs/blogId/posts/postId https://www.googleapis.com/blogger/v3/blogs/blogId/posts/postId/comments https://www.googleapis.com/blogger/v3/blogs/blogId/posts/postId/comments/commentId https://www.googleapis.com/blogger/v3/blogs/blogId/pages https://www.googleapis.com/blogger/v3/blogs/blogId/pages/pageId
사용되는 URI에 관한 전체 설명과 API에서 지원되는 각 작업의 결과는 Blogger API 참조 문서에 요약되어 있습니다.
예
인증된 사용자가 액세스 권한을 가진 블로그를 나열합니다.
GET https://www.googleapis.com/blogger/v3/users/self/blogs?key=YOUR-API-KEY
블로그 ID가 3213900인 code.blogger.com 블로그에서 게시물을 가져옵니다.
GET https://www.googleapis.com/blogger/v3/blogs/3213900?key=YOUR-API-KEY
JavaScript의 REST
callback
쿼리 매개변수를 사용하고 콜백 함수를 제공하여 JavaScript에서 Blogger API를 호출할 수 있습니다.
브라우저에서 스크립트를 로드하면 콜백 함수가 실행되고 콜백 함수에 응답이 제공됩니다. 이 방법을 사용하면 서버 측 코드 없이도 Blogger 데이터를 표시하는 다양한 애플리케이션을 작성할 수 있습니다.
다음 예에서는 YOUR-API-KEY를 API 키로 대체한 후 code.blogger.com 블로그에서 게시물을 검색합니다.
<html> <head> <title>Blogger API Example</title> </head> <body> <div id="content"></div> <script> function handleResponse(response) { document.getElementById("content").innerHTML += "<h1>" + response.title + "</h1>" + response.content; } </script> <script src="https://www.googleapis.com/blogger/v3/blogs/3213900/posts/8398240586497962757?callback=handleResponse&key=YOUR-API-KEY"></script> </body> </html>
데이터 형식
JSON
JSON(JavaScript Object Notation)은 특정 언어에 의존하지 않는 일반적인 데이터 형식으로, 임의의 데이터 구조를 간단한 텍스트로 표현할 수 있습니다. 자세한 내용은 json.org를 참조하세요.