このドキュメントでは、Blogger API の使用を開始する方法について説明します。
始める前に
Google アカウントを取得する
Google アカウントが設定されていることを確認します。誤ってデータを損失しないように、開発とテストには別の Google アカウントを使用することをおすすめします。テスト アカウントをすでにお持ちの場合は、Blogger のユーザー インターフェースにアクセスして、テストデータのセットアップ、編集、表示を行うことができます。
Blogger について理解を深める
Blogger のコンセプトに慣れていない場合は、このドキュメントを読み、コーディングを開始する前にユーザー インターフェースをお試しください。このドキュメントは、Blogger、ウェブ プログラミングの概念、ウェブデータ形式について理解していることを前提としています。
リクエストの承認とアプリケーションの識別について
アプリケーションから限定公開データがリクエストされた場合は、対象データへのアクセス権を持つ認証済みのユーザーがリクエストを認可する必要があります。
アプリケーションから一般公開データがリクエストされた場合は、リクエストの承認は必要ありませんが、ID(API キーなど)を追加する必要があります。
リクエストを承認して API キーを使用する方法については、API の使用に関するドキュメントのリクエストを承認してアプリケーションを識別するをご覧ください。
Blogger API の背景
Blogger のコンセプト
Blogger は、次の 5 つの基本コンセプトに基づいて構築されています。
- ブログ: API の基本的なコンセプト。ブログには投稿とページがあります。これは、ブログ名や説明などのブログ メタ情報を格納するコンテナです。
- 投稿: ブログ投稿は、ブログの作成者が作成した公開可能なアイテムです。この情報は、著者が今世界に公開したいものを反映した、タイムリーなものとなるように意図されています。時間が経つにつれて、ブログ投稿のコンテンツは古くなり、関連性が薄れることがわかっています。
- コメント: コメントは、ブログ投稿の作成者以外のユーザーが作成者の書いた内容に反応する場所です。レンガから花束まで、あらゆるものが揃っています。
- ページ: ページは、静的コンテンツ(プロフィール情報やユーザーへの連絡方法など)を掲載する場所です。これは通常、あまり変更されない時代を超越した情報です。
- ユーザー: ユーザーとは、投稿者、管理者、閲覧者など、Blogger を利用するすべてのユーザーを指します。公開ブログでは読者が匿名の場合がありますが、限定公開ブログでは読者が Blogger によって識別される必要があります。
Blogger API データモデル
リソースとは、一意の識別子を持つ個別のデータ エンティティです。Blogger JSON API は、次の 5 種類のリソースを操作します。
- Blogs リソース: ブログを表します。
- Posts リソース: 投稿を表します。各 posts リソースは blogs リソースの子です。
- コメント リソース: 特定の投稿に対するコメントを表します。各コメント リソースは投稿リソースの子です。
- Pages リソース: 静的ページを表します。各 pages リソースは blogs リソースの子です。
- Users リソース: 匿名ではないユーザーを表します。これは、ページ、投稿、コメントの作成者を識別するために使用されます。
Blogger API データモデルは、コレクションと呼ばれるリソースのグループに基づいています。
- ブログのコレクション
- <span="apicollection">ブログ コレクションは、ユーザーがアクセス権を持つすべてのブログで構成されます。ユーザー別にブログを一覧表示したり、ID で単一のブログを取得したりできます。</span="apicollection">
- 投稿コレクション
- 投稿コレクションは、特定のブログ リソース内のすべての投稿リソースで構成されます。
- コメント コレクション
- コメント コレクションは、特定の投稿リソース内のすべてのコメント リソースで構成されます。
- ページ コレクション
- ページ コレクションは、特定のブログ リソース内のすべてのページ リソースで構成されます。
- ユーザー コレクション
- ユーザー コレクションは、Blogger のすべてのユーザー リソースで構成されているため、一覧表示できません。ユーザーは、ID または識別子
selfを使用して、自分の users リソースを取得できます(他のユーザーのリソースは取得できません)。
Blogger API オペレーション
次の表に示すように、Blogger API では、コレクションとリソースに対してさまざまなメソッドを呼び出すことができます。
| オペレーション | 説明 | REST HTTP マッピング |
|---|---|---|
| list | コレクション内のすべてのリソースを一覧表示します。 | コレクション URI の GET。 |
| get | 特定のリソースを取得します。 | リソース URI の GET。 |
| getByUrl | URL でリソースを検索して取得します。 | GET(URL がパラメータとして渡されます)。 |
| getByPath | パスでリソースを検索して取得します。 | GET(Path がパラメータとして渡されます)。 |
| listByUser | ユーザーが所有するリソースを一覧表示します。 | ユーザー所有のコレクションに対する GET。 |
| search | クエリ パラメータに基づいてリソースを検索します。 | 検索 URL の GET。クエリはパラメータとして渡されます。 |
| insert | コレクションにリソースを作成します。 | コレクション URI の POST。 |
| delete | リソースを削除します。 | リソース URI の DELETE。 |
| patch | Patch セマンティクスを使用してリソースを更新します。 | リソース URI の PATCH。 |
| update | リソースを更新します。 | リソース URI の PUT。 |
次の表に、各リソースタイプでサポートされているメソッドを示します。非公開ブログに対するすべての list オペレーションと get オペレーションには、認証が必要です。
リソースの種類 |
サポートされるメソッド |
|||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| list | get | getByUrl | getByPath | listByUser | search | insert | 削除 | patch | update | |
| ブログ | × | はい | はい | いいえ | はい | × | × | × | × | × |
| 投稿 | はい | はい | いいえ | はい | いいえ | はい | はい | はい | はい | はい |
| コメント | はい | はい | × | × | × | × | × | × | × | × |
| ページ | はい | はい | × | × | × | × | × | × | × | × |
| ユーザー | × | はい | × | × | × | × | × | × | × | × |
呼び出しのスタイル
API を呼び出す方法はいくつかあります。
- REST を直接使用するか、JavaScript から使用する(サーバーサイド コードは不要)
- クライアント ライブラリを使用する。
REST
REST は、データをリクエストして変更するための便利で一貫したアプローチを提供するソフトウェア アーキテクチャのスタイルです。
REST という用語は「Representational State Transfer」の省略形です。Google API のコンテキストでは、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
API でサポートされている各オペレーションで使用される URI と結果の詳細については、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 をご覧ください。