Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8901

【Unity(C#),Python】API通信勉強メモ②Flaskでローカルサーバー立ち上げ

$
0
0

今回やること

この記事は前回の勉強の続きです。
【前回】:【Unity(C#)】API通信勉強メモ①

前回できなかったPostの処理を学びます。

なんもわからんなりの解釈が山盛りなのでマサカリ、オールオッケーです。

Flask

Flask(フラスク)は、プログラミング言語Python用の、軽量なウェブアプリケーションフレームワークである。標準で提供する機能を最小限に保っているため、自身を「マイクロフレームワーク」と呼んでいる。

Wikipediaより引用

今回はFlaskというPythonのウェブアプリケーションフレームワーク1を使用して
ローカルにアプリケーションサーバーを立て、Unity側からHTTPリクエスト(POST)を送る
までやってみようと思います。

おおよそ、参考リンクに沿って進めていきます。

【参考リンク】:Pythonと連携する方法

Flaskのインストール

$pip install flask

GETリクエスト

まずはFlaskで立てたローカルのサーバーにGETリクエストを送ってみます。

Python側の処理
fromflaskimportFlaskapp=Flask(__name__)@app.route("/",methods=['GET'])defindex():return"HIKAKIN「ブンブン!ハローユーチューブ!」"if__name__=="__main__":app.debug=Trueapp.run()

Unity側の処理は下記リンクから拝借しました。
【参考リンク】:UnityでHTTPに接続する

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);}}}

GetHIKAKIN.gif

成功しました。
①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やパスワードをサーバーに送れる。。。はずです。


Viewing all articles
Browse latest Browse all 8901

Trending Articles