【Swift UI】MySQLからデータを取得する方法!PHPでRESTAPIを実装

この記事からわかること
- SwiftでMySQLからデータを取得して表示させる方法
- PHPを使ったRESTAPIの実装方法
\ アプリをリリースしました /
Swiftで開発するiOSアプリからMySQLに保存されているデータを取得する方法をまとめていきます。
今回のポイント
PHPで REST APIを構築する
また今回はこのサイトの記事情報をJSONデータで取得しiOSアプリで表示できるようにしてみます。
REST APIとは?
REST APIとはAPI(Application Programming Interface)の定義に使用される設計構造思想の1つです。RESTは「Representational State Transfer」の略称で日本語に訳すと「具体的な状態の転送」と言った意味になります。
RESTでは「統一されたインターフェース」や「URIを通して情報を提供する」などさまざまな原則が定められています。
色々な原則をまとめて1行で表すと「HTTP通信で定めた形式でデータを取得できるURIを構築すること」だと思います。
ちなみにAPIとはアプリやプログラム、Webサービス同士を繋ぐインターフェースのことです。またURLはファイルパスを示し、URIはファイル自体を示す総称です。
SwiftからMySQLのデータを取得する
前置きが長くなってしまいましたがSwiftアプリからMySQLのデータを取得する方法を見ていきます。ざっくりとした流れは以下の通りです。
実装の流れ
- PHPでMySQLのデータをJSON形式でURL経由で出力
- SwiftでURLにアクセスし辞書型に変換
- 構造体に整形しビューに表示させる
この方法は自身でWebサイトなどを運営していることが条件になるので注意してください。
PHPでREST APIを実装する
まずはPHP側でMySQLに格納されているデータを参照するためのREST APIを構築していきます。
私はLaravelを使用していますが、対象のURLアクセス時にJSON形式で必要なデータを出力できるような形式に持っていければOKです。
Laravelを使用している場合はコントローラーとルーティングを記述する必要があります。
コントローラー
コントローラー側ではMySQLに格納されているデータベースへアクセスし必要な情報を出力するようにしておきます。
ルーティング
ルーティングは「web.php」の中に任意のURL(今回は/api/article)にアクセスされた時にコントローラーに繋がるように設定しておきます。
https://appdev-room.com/api/article
これでURLアクセス時にMySQLに格納されているデータがJSON形式で出力されるようになりました。
SwiftでURLにアクセスし辞書型に変換
続いてSwift(iOSアプリ)側から先程ルーティングをしたURLにアクセスしデータをSwiftで扱いやすいようにJSONSerializationを使って変換していきます。JSONSerializationの使い方やAPIから辞書型などへの変換方法は以下の記事を参考にしてください。
これでこのクラスのメソッドから対象となる記事データにアクセスできるようになりました。
構造体に整形しビューに表示させる
今回は扱いやすいように必要になる情報だけを保持させたArticle
構造体を定義してビューに充てがっていきます。
completionHandler
で受け取れるので今回はビューが表示されるタイミング(onAppear)で構造体に格納させ配列形式でプロパティなどに貯めていきます。
全体のコードは以下になります。また今回はfilter機能をつけて検索ボックスも実装してみました。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。