見出し画像

エンジニア採用担当がプログラミング頑張る話【17日目/2ヶ月間】

こんにちは、@hiroki_maekawaです。

昨日はAPIサーバーの構築からのGETリクエストを公式ドキュメントに沿って行ったので、今日はPOSTリクエストだったりJSON形式で返す的なことに挑戦していきたいと思います。

今日の目標

・POSTリクエスト
・JSON形式でレスポンスを用意する


用語の理解

昨日に引き続き、POSTリクエストやJSON形式について、公式ドキュメントを見ながら理解を試みます。

ここからリクエストの種類について自分なりの解釈を書いていきます。

・下記のようにGETリクエストするとユーザー名が表示されるもの。(昨日確認しました。)

http://localhost:ポート番号/users/ユーザー名


・下記のようにGETリクエストで複数の変数を付与して返ってくるもの。

http://localhost:ポート番号/show?変数グループ名1=変数1&変数グループ名2=変数2

スクリーンショット 0032-06-10 22.29.25

ちゃんと返ってきました。

スクリーンショット 0032-06-10 22.31.10


・save関数を書いて、今度はブラウザからではなく下記コマンド(POSTリクエスト)で複数の変数を付与して返ってくるもの。

$ curl -F "変数グループ名1=変数1" -F "変数グループ名2=変数2" http://localhost:ポート番号/save

GETリクエストの時はURLに変数を書いてましたが、POSTリクエストでは変数をURLに書いてません。ここが違いでしょうか。

またPOSTリクエストでは変数だけではなく、画像を送ることもできるようです。

・構造体を使い、JSONやXML形式のデータが返ってくるようにコードを書くことで、下記POSTリクエストでその形式でのレスポンスをが返ってくる。

http://localhost:ポート番号/users

JSON形式で受け取った値を、再度JSON形式で返す事もできるようです。これでデータの追加等ができるのでは?と思いました。


またJSON、XML、CSV形式で何が違うのかについて、下記サイトに分かりやくすまとまっていたため理解することができました。

https://code-ship-blog.wemotion.co.jp/technology/【何が違う?】データ形式csv-xml-jsonの特徴を知ろう/


ここまで理解したところで、今週のゴールはこんな流れで達成するのか?と仮説を立てました。

Echoを使ってhttpサーバーを立てて→GETやPOSTリクエストをすることで→http経由でJSON形式でデータのやり取りができる?→最終的にそのやり取りしたデータをMySQLに反映できれば良い?


1. POSTリクエスト

ではPOSTリクエストについて、実際にコードを書きながら確認していきたいと思います。

curlコマンド=サーバから、もしくはサーバへデータ転送を行うコマンド。HTTPのGETやPOSTリクエストのサポートをしてる。

-Fは、指定した内容をフォームから入力したのと同じように送るという意味。(もしくは--form)


スクリーンショット 0032-06-10 23.30.48

アドレスがまだ使われているというエラー、、確かにさっきGETリクエストした時のプロセスの終了の仕方が分からずにターミナル消したからだ。。

そんな時は下記のように、 $lsof -i:"ポート番号" でプロセス番号(PID)を確認して、$ kill "プロセス番号"でプロセスを終了します。

スクリーンショット 0032-06-10 23.38.06


その後新たにhttpサーバーを立ち上げ、

スクリーンショット 0032-06-11 0.06.38

ターミナルを別に開き、下記コマンドでcurlを使ってPOSTリクエストを送ったところ、反映されました!
→ただ、同じターミナル内でコマンドを打つ方法はないのか。。?

curl -X POST http://localhost:1323/save -d "name=Hiroki Maekawa&email=hiroki_maekawa@directpicks.co.jp" 

スクリーンショット 0032-06-11 0.30.11

しかもブラウザの方では反映されていないのは何でなんだろう。。?

スクリーンショット 0032-06-11 0.31.27

すでに深夜になってしまったので、これらの質問は明日してみようと思います。


2. JSON形式でレスポンスを用意する

POSTリクエストで分からないところがあったため、こちらも明日やりたいと思います。調べてみたところ、上で書いたコードに構造体とJSON関数を追記するだけみたいなので、明日ちゃちゃっと確認してしまいたいと思います。


今日できるようになったこと

・curlでPOSTリクエストの送信


さいごに

今日の目標であったJSON形式でレスポンス返すところまでできず、、という悔しさが残りましたが、明日もひとつづつ地道にやっていきたいと思います。

それではまた!

いいなと思ったら応援しよう!