テックキャンプ136日目〜APIとJSON

kobasaです(´ω`*)
pixabayのAPIを例に、JSON形式で情報を取得する勉強をしていました。
APIのWebサイトには「情報の取得方法、どのような情報が受け取れるのか」
などが記載されていますが、最初はなかなかとっつきにくいですね。

136日目の勉強内容

アプリの検索ボックスに入力した値を送信し、pixabayから検索結果を受け取るメソッド。
よくわかってないけど毎回レスポンス送ってるなら重くなったりするんかな?

func getImages(keyword:String){
	let url = "https://pixabay.com/api/?key=個人のAPIキー&q=\(keyword)"

	AF.request(url, method: .get, parameters: nil, encoding: JSONEncoding.default).responseJSON{ (response) in

		switch response.result{
		case.success:
			let json:JSON= JSON(response.data as Any)

			var imageString = json["hits"][self.count]["webformatURL"].string

			if imageString == nil{
				imageString = json["hits"][0]["webformatURL"].string
			}
				self.odaiImageView.sd_setImage(with: URL(string: imageString!), completed: nil)

		case.failure(let error):
			print(error)
		}
	}
}

個人に割り当てられたAPIのキー名と引数で受け取ったキーワードを使用して
リクエストに必要なurlを作成している。

let url = "https://pixabay.com/api/?key=個人のAPIキー&q=\(keyword)"

podのAlamofireを使ってhttpリクエストを送信している。
urlを渡しているのでパラメータはnilで良いらしい。レスポンスはJSON形式。

AF.request(url, method: .get, parameters: nil, encoding: JSONEncoding.default).responseJSON{ (response) in

欲しいデータ「webformatURLの値」は配列のネストになっている。文字列型で取得。
countにはアプリ側で数値を入れており、self.countで何ヒット目の画像か判断して取得。

var imageString = json["hits"][self.count]["webformatURL"].string

podのSDWebImageを使って受け取った画像を表示している。

self.odaiImageView.sd_setImage(with: URL(string: imageString!), completed: nil)

コメント

タイトルとURLをコピーしました