Loading...

当サイトのOpendata APIの使い方

当サイトでは、GraphQLを用い、Opendata APIを提供しています。本ページではその使い方を紹介しています。


基本仕様

  • (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
  • 何か疑問点やご要望があれば、 info@a01sa01to.com にお寄せください。

生のデータを取得する

当サイトでは、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を扱うことになります。 そのため、 Playground(サイト内リンク) の利用をお勧めします。 このPlaygroundでは、各データのクエリについての説明を見られたり、cURLのコードをコピーしたりすることができます。 もちろん、このPlaygroundを用いずに、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])の部分をすべて削除してください。

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

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