よりみちアプリ開発

Unityゲームアプリ開発、猫、映画、ゲーム、日々🍀

UnityでREST API通信 ⑤ PUT通信をおこなう

GET、POSTとスムーズにできましたが、 PUTでちょっとハマってしまいました(・_・;)

 

※POSTについてはこちらの記事や公式ドキュメント等を参考にさせていただきました。

UnityWebRequestによるHTTP通信 – てっくぼっと!

HTTP サーバーにフォームを送信 (POST) - Unity マニュアル

 

UnityWebRequestのPUT関数を使おうとしたのですが、
引数にフォームデータを渡せない…(文字列かバイト配列だけ)

UnityドキュメントのPUTの説明を読むと、
「HTTP サーバーに生データをアップロード」と書いてあり、
ん?なんかちがうかも…?

HTTPメソッドについて詳しくなかったのですが(今も)
PUTは更新する以外にもファイルをアップロードするという役割もあるらしいので、
UnityのPUTはこっちなのかなと思いました。

 

ドキュメントを読んでると、
method:GET や POST など、この UnityWebRequest によって使用される HTTP Verb を定義します。 というのがあったので、
POSTを使用して、 method変数でHTTPメソッドをPUTにしたらうまくいきました!

 UnityWebRequest www = UnityWebRequest.Post(url.webURL, formData);
 www.method = "PUT";

 

こちらのstackoverflowの質問でも、同様の解決法が書いてありました。

c# - How to update user picture using PUT method in Unity3D - Stack Overflow

 

また、Laravel側は、fill()を使うことで、Modelで設定した$fillableから、 設定できるプロパティを確認してくれるらしいので、
送信したカラムだけを更新することができます。

$input = $request->all();
$player -> fill($input) -> save();

 

ふうσ^_^;
webの知識がなくて勉強しつつなので、間違ってること等ありましたらすみません。
わかりづらい箇所などあればお気軽にご質問ください〜♪
では今回はこれにて( ・∇・)ノ