2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

毎日何か成果物か学んだことを書くAdvent Calendar 2019

Day 7

Swiftでクラロワのトッププレイヤーを取得する。

Last updated at Posted at 2019-12-07

はじめに

すき焼きうまし。

公式ドキュメント

クラロワのAPI叩く手順

  1. アカウント作る
  2. APIKEY取得する
  3. コード書く

アカウント作る&APIKEY作る

https://qiita.com/takahirono7/items/4d76d727945b0edd0657#api-key%E3%81%AE%E4%BD%9C%E6%88%90
この方の記事がとても分かり易かったので参考にしましょう。

コード書く

今回はエラー処理など書いてませんがご了承ください。
次回の記事でがっつりその辺も書きたいと思います。
とりあえず試しにAPI叩いてみたい人はどーぞ。

User.swift

jsonで帰ってきたデータを格納します。
Decodableを継承してあげることでよしなにjsonをマッピングしてくれます。

User.swift
import Foundation
public struct User: Decodable {
    var name: String
    var tag: String
    var expLevel: Int
    var trophies: Int
    var rank: Int
    var previousRank: Int
    struct clan: Decodable {
        var tag: String
        var name: String
        struct badge: Decodable {
            var name: String
            var icon_swf: String
            var icon_export_name: String
            var vategory: String
            var id: Int
            var image: String
        }

    }
    struct arena: Decodable {
        var name: String
    }
}

RequestAPI.swift

apikeyは各自が取ってきたものを使います。
今回使ったAPIは日本のトッププレイヤーを持ってくるというやつです。
URLの最後にJPとは言っていますがここを差し替えてあげると他の国のトッププレイヤーも取ってこれます。

RequestAPI.swift
import Foundation

class RequestAPI {
    let baseURL: String = "https://api.royaleapi.com/top/players/JP"
    let headers = [
        "Authorization": "apikey",//ここはapikeyを各自入れる
        "Cache-Control": "no-cache",
    ]
    func getTopUsers() {
        let request = NSMutableURLRequest(url: NSURL(string: baseURL )! as URL,
                                          cachePolicy: .useProtocolCachePolicy,
                                          timeoutInterval: 10.0)
        request.httpMethod = "GET"
        request.allHTTPHeaderFields = headers
        let decoder = JSONDecoder()
        let session = URLSession.shared
        let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
                do {
                    //Jsonをmodelにマッピング。modelにDecodableを継承させとく。
                    let users = try decoder.decode([User].self, from: data!)
                    for user in users {
                      print(user.name)      
                    }
                } catch {
                    print(error)
                }
            }
        )
        dataTask.resume()
    }
}

最後に

クラロワのAPIあるなんて意外でしたね。
ポケモンGOとかもAPI出してくれればいいのに。
クラロワは試合の勝ちが決定したらゴブリンスタンプを連打するのが楽しいですね。
他にもいろいろ習得できるっぽいので使ってみてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?