今回やること
この記事は前回の勉強の続きです。
【前回】:【Unity(C#)】API通信勉強メモ①
前回できなかったPostの処理を学びます。
なんもわからんなりの解釈が山盛りなのでマサカリ、オールオッケーです。
Flask
Flask(フラスク)は、プログラミング言語Python用の、軽量なウェブアプリケーションフレームワークである。標準で提供する機能を最小限に保っているため、自身を「マイクロフレームワーク」と呼んでいる。
Wikipediaより引用
今回はFlaskというPythonのウェブアプリケーションフレームワーク1を使用して
ローカルにアプリケーションサーバーを立て、Unity側からHTTPリクエスト(POST)を送る
までやってみようと思います。
おおよそ、参考リンクに沿って進めていきます。
【参考リンク】:Pythonと連携する方法
Flaskのインストール
$pip install flask
GETリクエスト
まずはFlaskで立てたローカルのサーバーにGETリクエストを送ってみます。
fromflaskimportFlaskapp=Flask(__name__)@app.route("/",methods=['GET'])defindex():return"HIKAKIN「ブンブン!ハローユーチューブ!」"if__name__=="__main__":app.debug=Trueapp.run()
Unity側の処理は下記リンクから拝借しました。
【参考リンク】:UnityでHTTPに接続する
usingSystem.Collections;usingUnityEngine.Networking;usingUnityEngine;publicclassHTTPGet:MonoBehaviour{//接続するURLprivateconststringURL="http://localhost:5000/";voidStart(){//コルーチンを呼び出すStartCoroutine("OnSend",URL);}IEnumeratorOnSend(stringurl){//指定したURLでGETUnityWebRequestwebRequest=UnityWebRequest.Get(url);//URLに接続して結果が戻ってくるまで待機yieldreturnwebRequest.SendWebRequest();//エラーが出ていないかチェックif(webRequest.isNetworkError){//通信失敗Debug.Log(webRequest.error);}else{//通信成功Debug.Log("Get"+" : "+webRequest.downloadHandler.text);}}}
成功しました。
①Python側(VSC)でデバッグを開始
②UnityでPlay
という順番です。
POSTリクエスト
次はFlaskで立てたローカルのサーバーにPOSTリクエストを送ってみます。@app.route("/", methods=['POST', 'GET'])
にPOSTを追加しただけです。
fromflaskimportFlaskapp=Flask(__name__)@app.route("/",methods=['POST','GET'])defindex():return"HIKAKIN「ブンブン!ハローユーチューブ!」"if__name__=="__main__":app.debug=Trueapp.run()
実際にやってみて思ったこととしては結局POSTとGETは何が違うんだよってことです。
この疑問に関しては下記リンクを見て一旦深く考えるのを止めることにしました。
【引用元】:GETとPOSTの違いについて
本当はGETでやるべきこともPOSTでできてしまうのです。
やろうと思えばすべての処理をPOSTで作れてしまうのです。
この辺りは思想的な話もあるので、何とも言えない部分です。
次回やること
Postの処理も上手くいったので次回はUnity側から入力した情報を登録 & ログインする機能を作っていきます。
とりあえずわかっていることとしては、
リクエストを送る際に情報を渡す方法として、
Unity側にWWW.Form
が用意されていることです。
//POSTする情報WWWFormform=newWWWForm();form.AddField("user_id",idInputField.text,Encoding.UTF8);form.AddField("password",passInputField.text,Encoding.UTF8);
上記のようにUnity側でログイン画面に入力したIDやパスワードをサーバーに送れる。。。はずです。