【Unity NodeJs】で簡単なAPIサーバーを作成する Get編
スポンサーリンク
プログラミングには様々な言語やありますよね。
エンジニアの世界でも業種は多岐に渡ります。
私は今までフロントエンド(クライアント)エンジニアとしてやって来ましたが、元々サーバーサイドにも興味があり、いい機会なので「Nodejs 」をUnityと掛け合わせて「ハイスコアAPIサーバー」を作成したので、メモ感覚で記載してみました。
使用言語とソフト
・NodeJs
・NodeJs Express
・MySql
・Unity
1. NodeJs側のソースコード
require('date-utils'); var moment = require('moment'); var bodyParser = require('body-parser'); const exp = require("express"); const app = exp(); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.listen(3000, function () { console.log("Start GetServer"); }) const mysql = require('mysql'); app.get("/GET", function (req, res, nex) { let con = mysql.createConnection({ host: 'localhost', user: 'root', port: 3306, database: 'playerRank' }); con.query("SELECT * FROM RANKPLAYER", function (e, r) { if (e) { console.error('error connecting: ' + e.stack); return; } console.log(r); response(res, "OK", r); }) })
事前にMySqlで「playerRank」データベースを作成して、RANKPLAYER という名前のテーブルを作成しています。
ネーミングセンス
次にUnity側の処理を記述します。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System; using System.IO; using UnityEngine.Networking; using System.Text; public class GetNodeJsBtn : MonoBehaviour { private const string URL = "http://localhost:3000/Get"; public void OnGetJson() { StartCoroutine("mOnSend", URL); } private IEnumerator mOnSend(string url) { UnityWebRequest webRequest = UnityWebRequest.Get(url); yield return webRequest.SendWebRequest(); //エラーが出ていないかチェック if (webRequest.isNetworkError) { //通信失敗 Debug.Log(webRequest.error); } Debug.Log(webRequest.downloadHandler.text); //受信したテキスト(json)を変換 Json jsonClass = JsonUtility.FromJson<Json>(webRequest.downloadHandler.text); //通信失敗 foreach(var data in jsonClass.data) { Debug.Log($"jsonClass {data.id}"); } }
UnityWebRequestを使用して、先ほど作成したNodeJsのGetAPIにアクセスしています。
そのあとJsonUtilityでJsonクラスに変更しています。