質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

890閲覧

SwiftとMySQLのデータ通信について

konnitiwa

総合スコア1

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/06/07 04:15

編集2021/06/07 05:39

現在Swiftの学習をしている初学者ですが、不明点があり、ご教示頂きたくご質問いたしました。
SwiftとMySQLのデータ通信に関しての質問です。
目標としているアプリの機能なのですが、SwiftとMySQL(AWSRDS)用いたログイン機能とチャット機能(ユーザーの会員情報なども見れる)を実装したいと考えています。(FirebaseといったDBがあるのは存じていますが、今回はすでにWebアプリケーションとしてリリースしているサービスをiOSアプリ(ネイティブアプリ)としても作成したいという前提で考えていますのでMySQLを使用したいと思っています)

調べたところ、まずSwiftとMySQLをやりとりするにはJSONのHTTP通信を使うのがいいということで、LaravelにてREST APIというものを作成し、Swift側でRDBの中身をJSON形式で取得することはなんとかできました。
しかし、REST APIでいうStore,Update,DestroyなどのメソッドをSwift側でどうやって扱うのかがわからないという状況です。

REST APIの作成方法は下記サイトを参考にしました。テストではデータの構成は少し変えています。
https://noumenon-th.net/programming/2020/02/12/laravel-api/

Swift側ではSwiftyJSONとAlamofireを使い、データを取得しました。下記がコードです。

API処理呼び出しメソッド(URLは隠しています)

Swift

1 func api() { 2 let urlString = "http://??????????/api/member" 3 let encodeUrlString:String = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! 4 userInfo.userDelegate = self 5 userInfo.SetData(resultCount: 2, encodeUrlString: encodeUrlString) 6 }

API処理クラス

import Foundation import SwiftyJSON import Alamofire protocol UserInfoProtocol { func catcheData() } class UserInfo { var idArray = [Int]() var nameArray = [String]() var emailArray = [String]() var passwordArray = [String]() var updkbnArray = [String]() var userDelegate:UserInfoProtocol? func SetData(resultCount:Int,encodeUrlString:String) { AF.request(encodeUrlString, method: .get, parameters: nil, encoding: JSONEncoding.default).responseJSON { (response) in // print(response.debugDescription) switch response.result { case .success: do { let json:JSON = try JSON(data: response.data!) for i in 0...resultCount - 1 { if json["data"][i]["name"].string == nil { print("ヒットしませんでした") return } self.idArray.append(json["data"][i]["id"].int!) self.nameArray.append(json["data"][i]["name"].string!) self.emailArray.append(json["data"][i]["email"].string!) self.passwordArray.append(json["data"][i]["password"].string!) self.updkbnArray.append(json["data"][i]["updkbn"].string!) } self.userDelegate?.catcheData() } catch { } break case .failure(_): break } } } }

同じようなコード書き方でStore,Update,Destroy,などの処理をする方法はありますでしょうか。
またはもっと効率の良い書き方があればご教示いただけますと幸いです。

二つ目の質問で恐縮なのですが、SwiftとMySQLでログイン機能を実装する場合、
1.Swiftより登録情報をLaravelへHTTP通信で登録。
2.ログインする場合、入力されたemail,passwordをLaravelへHTTP通信で送り、データチェックし、OKであれば
Swift側でUserdefaultsを使用し、ログインのセッション管理などをする
上記のようなイメージで合っておりますでしょうか。

色々長く書いてしまいましたが、上記について、知識をお持ちの方がいらっしゃいましたらご教示いただけますと幸いです。
また、情報不足など、至らない点がございましたらご指摘いただけますと幸いです。

開発環境
AWS Amazon Linux2
MySQL
PHP7
Laravel6
Swift5
Xcode12

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/06/07 08:32 編集

> REST APIでいうStore,Update,Destroyなどのメソッド Store, Update, Destroy というのはたぶん Laravel のメソッド名なんでしょうけど、REST API 的には GET, POST, PUT, DELETE などの HTTP メソッド名で考えるのが良いかと思います。 で、Alamofire では AF.request(encodeUrlString, method: .get, 〜) の method: .get のところにお望みの HTTP メソッドを指定すれば良いのでは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問