🔰
【Flutter】pub.dev APIを叩いてみよう
はじめに
こんばんは🌌
Altive株式会社 Flutterアプリエンジニアの中村です。
先日pub.dev APIに触れる機会があったのですが、日本語で紹介している記事がなさそうだったのでどんなことができるか書き留めておこうと思います📝
※公式でサポートしているエンドポイントが2つしかないので短いです
このAPIを使ってできることは少ないですが、認証不要で無料なのでなんでもいいからAPIを叩くFlutterアプリを作って手元で動かしてみたい方などにはいいかなと思います!
人気パッケージを取得する
https://pub.dev/api/package-name-completion-data
人気パッケージをpub.devのランキング順に取得します。
こちらは全パッケージを取得する訳ではありません。
オートコンプリート用に用意されているようです。
レスポンス
{
"packages": [
"http",
"provider",
/* further package names */
]
}
全パッケージを取得する
https://pub.dev/api/package-names
pub.dev上に存在するすべてのパッケージを取得します。
アルファベット順に取得できます。
レスポンス
{
"packages": [
"http",
"provider",
/* further package names */
]
}
こちらも同じくJSON形式で取得できます。
検索機能を実装したいとき
pub.dev APIには検索用のAPIが用意されていないので、先ほど紹介したAPIを叩いてローカルにパッケージ一覧をキャッシュしておき、その中から検索してくださいとのことでした。
パッケージ一覧を管理するProviderが一つあると良さそうですね。
おわりに
Flutterを学び始めたころに、なんでもいいからAPIを叩く実装をして手元で動かしてみたいなと思ったことがあったので同じような方の助けになると嬉しいです😊
pub.dev APIに変更があった時はDart announceにてアナウンスされるみたいなのでたまにチェックしておくといいかもしれません。
GitHubで編集を提案
Discussion
"Additional APIs"と書いてある通り、 https://github.com/dart-lang/pub/blob/master/doc/repository-spec-v2.md に記載のもの以外で2つそこに載っているということかなと思います。
また、公式のものではないですが、 pub_api_client | Dart packageがあって、https://github.com/leoafarias/pub_api_client/blob/main/lib/src/endpoints.dart を見ると使える全エンドポイントが分かりますね(もちろん今後しれっと変更されて使えなくなるリスクはありますが)。
ちなみにRiverpodのexamplesの中で一番新しい(=参考とするべき) https://github.com/rrousselGit/riverpod/tree/dev/examples/pub も pub.dev の各種API叩いてます。
ただ、最近 pub.dev の指標が人気からダウンロード数に変わった影響で壊れてしまっていて、レスポンス処理のコードを少し直さないと動かなくなってしまっていますが。