プログラマーへの道 #78 の補足説明
こんにちは、プログラマーVTuberの衣亥栖ティオです。
今回は以下の動画の補足説明をします。
動画内で実装したソースコードも載せています。
今回の動画で実装したソースコード
https://github.com/tio-iis/memo-server/pull/5/files
https://github.com/tio-iis/memo-server/tree/9274ad292ad599e488b4788972a68a7932d8a74f
HTTP Method の POST について
データを登録するためのエンドポイントでは HTTP Method が POST のリクエストを受ける必要があります。 そのため、動画内のcurlでは "-X POST" というように POST のリクエストとしてcurlを実行しています。
https://developer.mozilla.org/ja/docs/Web/HTTP/Methods/POST
JSONというデータ構造について
動画内の実装やcurlに JSON という単語がちらほら出ていると思います。 JSON というのは複雑なデータ構造を文字列で表現するための方法の1つです。
https://developer.mozilla.org/ja/docs/Learn/JavaScript/Objects/JSON
具体的には以下のような構造になります。 基本的に値の識別子である key とその key に対応する value で構成されていますが、 それらを入れ子構造にしたり、配列構造にすることもできます。
"squadName": "Super hero squad", "homeTown": "Metro City", "formed": 2016, "secretBase": "Super tower", "active": true, "members": [ { "name": "Molecule Man", "age": 29, "secretIdentity": "Dan Jukes", "powers": [ "Radiation resistance", "Turning tiny", "Radiation blast" ] },
JSONはHTTP通信でデータをやりとりするために利用するメジャーなデータ構造なので、エンジニアの必須知識になります。
HTTP Header の Content-Typeについて
Content Type は HTTP Header に指定することができる属性の1つです。リクエストやレスポンスのデータ種別を明示することができます。
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Type
今回指定したのは "application/json" という値で、これはデータ種別がJSONであることを示しています。 application/json の他にもmultipart/form-data などの値を指定することができます。
ポインタとアドレス
動画内で構造体を生成している部分が以下です。
m := &Memo{}
このときに付けている "&" はmという変数を "ポインタ変数" という特殊な変数として生成することを意味しています。 これを理解するのはポインタとアドレスを理解する必要があります。 以下の記事に解説が載っていますが、今後の動画でも説明する予定なので、今は気にしなくても大丈夫です。
https://qiita.com/Sekky0905/items/447efa04a95e3fec217f#%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BFpart