クラロワAPIを使ったアプリを作成#4
このアプリは年末までに作ろうと思っているので残りあと5日でアプリを作っていく。
作業内容
・Web APIについての勉強の続き(Wikipedia APIを使っている例を利用)
・クラロワAPIをpythonで使っている例が見つかったので、その例を見ながらFlutterのコードに改変。
・Flutterにおけるhttp通信の基礎がわかっていなかったので復習
・クラロワAPIを使った通信ができるように(やっとできた)
Web APIについての勉強の続き
こちらの記事を参考に学習
以前の記事ではランダムでのデータの収集をAPIを通して行なっていたが、今回はキーワードを指定したやり取りに改変した。APIを使う上で、urlに条件を追加していくイメージの理解が深まった。
クラロワAPIをpythonで使っている例が見つかったので、その例を見ながらFlutterのコードに改変。
こちらの記事を参考にした。
とりあえずコードをなんとなくそれっぽいFlutterのコードに変えていったが、APIを叩くと認証がうまく通らなかった。
Flutterにおけるhttp通信の基礎がわかっていなかったので復習
そこで公式のhttpのパッケージに関する記事を読むことで学習。めちゃくちゃわかりやすくて最高だった。
これで今まで疑問だった認証に関する課題が解決した。
クラロワAPIを使った通信ができるように
(やっとできた)
APIの使い方が全くわからないところから、やっとこさ自分の使いたいAPIを好きなように叩ける準備が整った。長かった。リクエストのメソッドの部分のみ記録として記載する。明日以降、画面に表示できるようにしていく。
// リクエスト
Future<Clan> request() async {
String _endpoint = "https://api.clashroyale.com/v1/cards?limit=10";
final response = await http.get(
Uri.parse(_endpoint),
headers: {
'Authorization' : 'Bearer {自分のトークン}',
},
);
final responseJson = jsonDecode(response.body);
return Clan.fromJson(responseJson);
}
わからなかったことは、トークンを使ってどうやって認証すればいいのかだった。これに関しては、クラロワAPIの公式に書いてあった(最初は意味がわからなかったのでスルーしていた)
<以下は無視していた重要な部分>
Correct Authorization header looks like this: "Authorization: Bearer API_TOKEN".
それと、もしアプリとしてリリースするなら自分でサーバを立てないといけない。なぜならこのAPIのキーにはアクセスするIPアドレスの制限がかかっているためである。
<以下は引用>
The token is bound to rate limitations and specified IP addresses, so you will need a web server to fetch data from the API and host your application.
教訓などのメモ
・やっぱり導入の部分だけでも知っている人に聞いたら早い気がする。
・何を調べればいいのかわからない。
・頼れる人がいないなら同じようなことをしている人の記事をひたすら読んで、重要なことが何かをなんとなく理解する。
・今回はJWTがわからなかったが、その知識は結局なくてもなんとかなった気がする。あそこまで勉強する必要はなかった。重要なことがわかっていないままかなり深く理解しようとしてしまった。
・記事と記事を何回も往復するのはしょうがない気もする。
・知識がついて初めて理解できる内容があるので、あるサイトを見た時に理解できないことは理解できないままにしておく。そして他の部分で知識が増えたらまた読んでみるのがいい気がする。
[その他、理解を深めた内容など]
ファクトリコンストラクタ
このページを参考に理解。
具体的な実装を意識せずにインスタンスを使うことができる。