Unity の WWW と WWWForm を使ってRESTfullAPIを試した時のメモ

Unity上でRESTfullAPIを叩いた。

サーバー用意するのめんどくさかっただけなんだけど多分PHPで適当にサーバー立ててUnity側は最低限の情報しか送らないとかのほうが試行回数は3倍くらいになったんじゃないかな

 

結構情報が散らばりすぎる上、無知プログラマの僕はリファレンス見てもわかりませんでした。

なのでその備忘録

 

やったこと

* UnityでRESTfullAPIを使った(POST)

Postのやり方
俺的Postの手順
1.headers(Hashtable型)に必要な情報入れる
2.データ(byte型の配列)の用意(JsonだったりJsonだったりJson以外は自分知らないっす・・・)
3.POSTする(いみふ
架空のAPI /yakiniku/tabetai の仕様
* BASE url
** https://base.tukareta.com
* REST HTTP Method
** POST // 今回はPOST
* REST URI Fragment // ベースURLの後ろにつけるURL
** /yakiniku/tabetai
* Body Content // 送るデータの内容
** yakinikuData 
* Return Object    // 返り値
** ResponseYakinikuTabetai 
架空のAPIのパラメーター
* YakinikuData
** shopId // お店番号 NumberならOK
** openTime // お店の開店時間 String
** nearStationName // 最寄り駅の名前
* ResponseYakinikuTabetai
** text // リクエスト送ってきた人に言いたい言葉 String
** isOK // いってもいいかどうか Boolean
* HEADERSの仕
** Authorization:Yakiniku yakinikuToken
** Host: base.tukareta.com
** Content-Type: application/json; charset=utf-8
// 焼肉が食べたい切実な思いをPOSTするMethodの実装
IEnumerator RequestYakinikuTabetai(YakinikuData yakinikuData,Action callback)
{
    
	string url = "https://base.tukareta.com"+"/yakiniku/tabetai"; // 超架空のAPI
	string yakinikuToken = "qawsedrftgyhujiklo;p"; // 架空の認証トークン

	Hashtable headers = new Hashtable(); // ヘッダ情報のHashtable
	headers["Authorization"] = "Yakiniku " + yakinikuToken; // 架空の認証Yakinikuに思いの詰まった架空のトークンを付与
	headers["Host"] = "base.tukareta.com"; // APIのHOST
	headers["Content-Type"] = "application/json; charset=utf-8"; // UTF8なJsonだよ

	string dataStr = yakinikuData.ToJson(); // Json型を吐き出してくれるメソッドが予めYakinikuDataにはある予定
	Debug.Log(dataStr); //ちなみにこんな値になる感じで→{"shopId":3939,"openTime":"8:00","nearStationName":"PachinkoGUNDAM"} 
	byte[] data = System.Text.Encording.UTF8.GetByte(dataStr);

	WWW www = new WWW(url,data,headers);
	yield return www;

	// コールバックが設定されてたら呼ぶべし
	if (callback != null)
		callback(www);
}
// 実行例-------NewMonobehaviour.cs

void Start()
{
	var kuitai = YakinikuData(3939,"8:00","PachinkoGUNDAM");
	StartCorutine(RequestYakinikuTabetai(kuitai,res=>
	{
		if (www.error == null)
		 	Debug.Log(www.text);	// {"text":"Muripo...","isOK":"false"} なんかリクエスト投げた結果が入っている。ここではテキストと可否フラグ
		else
			Debug.Log(www.error);	// 404とか401とか色々
	}));

}

 

 ひとまずこんな感じ

注意としては

*  Headersは仕様に書いてある通り設定しているか(場合によってはエラー出ます

* データの形式は合っているか(jsonなのに文字を変に弄ったりするとか#やった

* Unity✕C# でやるならPOSTの仕方とデータの入れ方は合っているか?