Asa's Website

当サイトの Opendata API の使い方

Table of Contents

基本仕様

  • (www なし) a01sa01to.com ドメイン配下で提供されます。
  • HTTPS で提供されます。
  • 日付等はすべて日本時間 (UTC+09:00) です。
  • 応答ヘッダには、以下のヘッダが設定されています。
    • Access-Control-Allow-Origin: *
    • Access-Control-Allow-Methods: GET, POST, OPTIONS
    • Access-Control-Allow-Headers: Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization
  • 何か疑問点やご要望があれば、[email protected]にお寄せください。

そのままのデータを取得する

当サイトでは、 Opendata API として API を提供していますが、 API を用いることなく、「そのままの」データも取得することができます。

GraphQL を用いた Opendata API では必要なデータのみを取得することができますが、互換性等の観点からそのままデータを好まれることもあるかと思います。 そのような場合は、以下の手順で取得することができます。

  1. 利用したいオープンデータのページにアクセスします。
  2. ファイルに関する情報・利用時の注意点をよく読み、下にスクロールします。
  3. 「Copy」をクリックすると、掲載されているデータのダウンロードリンクをコピーします。 「Download」をクリックすると、掲載されているURLから生データをダウンロードします。
ダウンロード画面
ダウンロード画面

Opendata API を用いる (推奨)

エンドポイント

GraphQL を用いた Opendata API は、どのようなデータにアクセスする場合でも、以下の単一のエンドポイントです。 JSON 形式でデータが返されます。

https://a01sa01to.com/api/opendata/

Opendata API での通信

GraphQL の操作では、複数行の JSON を扱うことになります。 そのため、 GraphiQL などの GraphQL クライアントを用いて操作することをお勧めします。 cURL などの各種ライブラリを利用することもできます。

Opendata API には、基本的に POST メソッドで通信することになります。 cURL を用いてクエリを送信するには、 JSON のペイロードを持つ POST リクエストを送信してください。 形式は、以下の通りです。 改行文字は適宜エスケープしてください。また、 [YOUR QUERY HERE] の部分については、各ページに掲載されているクエリに置き換えてください。
curl 'https://a01sa01to.com/api/opendata/' -X POST -d '{"query": "[YOUR QUERY HERE]"}'

クエリについて

GraphQL では、クエリに指定されたデータのみを返します。 すなわち、クエリから不要なデータを削除することによって、必要なデータのみ取得することができます。 この結果、データ通信量削減などの効果が期待できます。 返されるデータについては、各データのページを参照してください。

ページ付けについて

当 API では、一部のデータにおいて、多くのデータを複数のページに分けて返す、「ページ付け (Pagination)」機能をサポートしています。

ページ付け機能は、以下の4つの引数のいずれかを指定して利用します。 基本的には、 [before][last] を組み合わせるか、 [first][after] を組み合わせて利用します。
  • before : 指定された cursor よりも前のデータを返す (cursorのデータは含まれない)
  • after : 指定された cursor よりも後のデータを返す (cursorのデータは含まれない)
  • first : 前から数えて、指定された数のデータを返す
  • last : 後ろから数えて、指定された数のデータを返す
cursor は、データの pageinfo から取得できます。 pageinfo で得られるデータは、以下の通りです。
  • hasPreviousPage : 前のページがあるかどうか
  • hasNextPage : 次のページがあるかどうか
  • startCursor : 現在表示しているページの先頭のデータの cursor
  • endCursor : 現在表示しているページの最後のデータの cursor

対応する各データのクエリにおいて、 [PAGINATION INFO] と記述されている部分があるかと思います。 その部分を、以下のように書いてください。 ただし、利用しない引数を削除したり、 [CURSOR] [NUMBER] の部分を置き換えるなど、適宜変更してください。
([PAGINATION INFO])
(before: [CURSOR], after: [CURSOR], first: [NUMBER], last: [NUMBER])
ページ付けの機能が必要なく、すべてのデータを一括で取得する場合は、([PAGINATION INFO])の部分をすべて削除してください。

ページ付け機能のイメージ

ページ付け機能のイメージ01
全体に15個のデータがある場合を考えます
ページ付け機能のイメージ02
例えば (first:5) とすることで、先頭から5個のデータを取得できます
ページ付け機能のイメージ03
例えば (last:7) とすることで、最後から7個のデータを取得できます
ページ付け機能のイメージ04
組み合わせて使うこともでき、例えば (first:10, last:4) とすることで、先頭から10個のデータのうち、後ろの4個のデータを取得できます
ページ付け機能のイメージ05
(before: "6") とすることで、cursorが"6"のデータよりも前のデータを取得できます。ただしcursorのデータは含まれません
ページ付け機能のイメージ06
(after: "6") とすることで、cursorが"6"のデータよりも後のデータを取得できます。ただしcursorのデータは含まれません
ページ付け機能のイメージ07
これらを組み合わせて使い、 (before:"10", after:"6") のように使うと、cursorが"6"と"10"の間にあるデータを取得できます
ページ付け機能のイメージ08
(after:"6", first:5) のように使い、cursorが"6"のデータよりも後のデータのうち先頭から5個のデータを取得できます

ページ付け機能の主な利用法

ページ付け機能の主な利用法01
全体に15個のデータがある場合を考えます
ページ付け機能の主な利用法02
まずは4つのデータを取得します
ページ付け機能の主な利用法03
次のページがあるので、次のページを取得します
ページ付け機能の主な利用法04
afterにendCursorの値をセットし、次のデータを4件分取得します
ページ付け機能の主な利用法05
次のページがあるので、次のページを取得します
ページ付け機能の主な利用法06
afterにendCursorの値をセットし、次のデータを4件分取得します
ページ付け機能の主な利用法07
次のページがあるので、次のページを取得します
ページ付け機能の主な利用法08
afterにendCursorの値をセットし、次のデータを4件分取得します
ページ付け機能の主な利用法09
次のページがないので、すべてのデータが取得できたことになります