【Unity(C#),Python】API 통신 공부 메모②Flask로 로컬 서버 시작

이번에 할 일



이 기사는 마지막 공부의 연속입니다.
【전회】: 【Unity(C#)】API 통신 공부 메모①

마지막으로 할 수 없었던 Post의 처리를 배웁니다.

아무것도 모르는 해석이 산성이므로 마사카리, 올 오케이입니다.

Flask



Flask(플라스크)는 프로그래밍 언어 Python을 위한 경량의 웹 애플리케이션 프레임워크이다. 표준으로 제공하는 기능을 최소한으로 유지하고 있기 때문에, 자신을 「마이크로 프레임워크」라고 부르고 있다.

Wikipedia 보다 인용

이번에는 Flask라는 Python 웹 애플리케이션 프레임 워크 1
로컬로 애플리케이션 서버를 설정하고 Unity 측에서 HTTP 요청(POST) 보내기
까지 해 보려고합니다.

대략 참고 링크를 따라 진행합니다.

【참고 링크】: 파이썬과 함께 작동하는 방법

Flask 설치


$pip install flask

GET 요청



먼저 Flask로 세운 로컬 서버에 GET 요청을 보냅니다.

파이썬 측 처리
from flask import Flask

app = Flask(__name__)


@app.route("/", methods=['GET'])
def index():
    return "HIKAKIN「ブンブン!ハローユーチューブ!」"


if __name__ == "__main__":
    app.debug = True
    app.run()


Unity 측의 처리는 아래 링크에서 빌렸습니다.
【참고 링크】: Unity에서 HTTP에 연결

Unity 측에서 HTTP 요청을 보내는 스크립트
using System.Collections;
using UnityEngine.Networking;
using UnityEngine;

public class HTTPGet : MonoBehaviour {

    //接続するURL
    private const string URL = "http://localhost:5000/";

     void Start()
    {
        //コルーチンを呼び出す
        StartCoroutine("OnSend", URL);
    }

    IEnumerator OnSend(string url)
    {
        //指定したURLでGET
        UnityWebRequest webRequest = UnityWebRequest.Get(url);

        //URLに接続して結果が戻ってくるまで待機
        yield return webRequest.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를 추가했습니다.

from flask import Flask

app = Flask(__name__)


@app.route("/", methods=['POST', 'GET'])
def index():
    return "HIKAKIN「ブンブン!ハローユーチューブ!」"


if __name__ == "__main__":
    app.debug = True
    app.run()


실제로 해보고 생각한 것은 결국 POST와 GET은 무엇이 다르다는 것입니다.
이 의문에 관해서는 아래의 링크를 보고 일단 깊게 생각하는 것을 멈추기로 했습니다.
【인용원】: GET과 POST의 차이에 대해

사실은 GET에서해야 할 일도 POST로 할 수 있습니다.
하고 싶다면 모든 처리를 POST로 만들 수 있습니다.
이 근처는 사상적인 이야기도 있으므로, 뭐라고 말할 수 없는 부분입니다.

다음에 할 일



Post의 처리도 잘 되었으므로 다음번에는 Unity측에서 입력한 정보를 등록 & 로그인하는 기능을 만들어 갑니다.

우선 알고있는 일로서,
요청을 보낼 때 정보를 전달하는 방법으로,
Unity 측에 WWW.Form 가 준비되어 있는 것입니다.
    //POSTする情報
    WWWForm form = new WWWForm();
    form.AddField("user_id", idInputField.text, Encoding.UTF8);
    form.AddField("password",passInputField.text, Encoding.UTF8);

위와 같이 Unity측에서 로그인 화면에 입력한 ID나 패스워드를 서버에 보낼 수 있다. . . 해야합니다.

했습니다 → 【Unity(C#),Python】API 통신 공부 메모 ③간이판 로그인 기능의 실장



프레임워크와 라이브러리의 차이 

좋은 웹페이지 즐겨찾기