RESAS APIのクライアントをJavaで書いてみました
RESAS APIでいろいろデータを公開してもらっていますが、
なかなかデータをとるのは一苦労です。
そして一度作ったらみんなでシェアしたほうが便利だとおもったので
作ってみました。
そしてgithubに公開したのですが、いまいち検索に引っかからないので、
記事にしてみました。
※ 注意:RESASのみで、法人インフォはまだ対応していません。
#RESAS-Client Java
githubにあげていますので、こちらからgit cloneするか zipでダウンロードして利用してください。
RESASのAPI一覧へのリンク
https://opendata.resas-portal.go.jp/docs/api/v1/index.html
https://opendata.resas-portal.go.jp/docs/api/v1/detail/index.html
簡単な使い方の説明 内水面漁船隻数を例に
各クラスにRequestとResultと、テスト用のクラスがあります。
テスト用のクラスで、手で僕がテストしてとれるのをみたぐらいになっています。
サンプル的にどうぞ
(一部のテストクラスはまとまっちゃっていますが、ご了承ください スマヌ(-人-;))
RESAS APIの送受信をURLをベースにクラス名と変数を作成しています。
URLに沿った名前とそれにRequest/Result/RequetTestみたいな感じのクラスになっています。
内水面漁船隻数のAPIからデータを取得したいとするとURLが以下のようになります。
- api/v1/fishery/riverBoat/forStacked
クラス名をURLに合わせてつくっているので、クラスはFisheryRiverBoatForStacked***というなまえになっています。
***の部分は、送信用のパラメータを持つクラスはRequest、受信用のパラメータを持つクラスはResultとなっています。
- HTTPのリクエストのパラメータをもつクラス FisheryRiverBoatForStackedRequest
- 受け取るクラス FisheryRiverBoatForStackedResult
- テストでつかった送信クラス FisheryRiverBoatForStackedRequestTest
## 送信とAPIのキー
送信するには、以下のクラスを使います。
-
ResasHttpAccess httpのリクエストをするクラス
sendStringにRequestのurlとパラメータを渡します。
このクラスのなかにAPIのキーをかくところがありまが、実行時にjavaの引数に-DXPIKEY=******という形で渡します。 -
ResasUtil パラメータをセットするクラス
Requestにlistにしたパラメータ名と値をそれぞれ渡します
合わせてみてみる
gitcloneしてきてもらい
FisheryRiverBoatForStackedRequestTestを見てみてください。
テストクラスにサンプルがあるのでみてみてください。以下抜粋です。
@Test
public void test() throws ParseException, IOException {
ObjectMapper om = new ObjectMapper();
List<String> paramNames = new ArrayList<String>();
paramNames.add("prefCode");
List<String> paramValues = new ArrayList<String>();
paramValues.add("1");
StringBuffer params = ResasUtil.addParameters(paramNames, paramValues);
String result = ResasHttpAccess.sendString("api/v1" + FisheryRiverBoatForStackedRequest.url, params.toString());
System.out.println(result);
FisheryRiverBoatForStackedResult resultData = om.readValue(result,
FisheryRiverBoatForStackedResult.class);
FisheryRiverBoatForStacked a = resultData.getResult();
}
最後に
一通りのクラスがあるので、ご利用くださいませ。
また、まだまだ抽象化や簡単にできるところがあるので皆さんのリクエストやヘルプお待ちしております。
(゚∀゚)地元が素敵な街になりますよう