Day 6・外とつながる — Web・API
リクエストとレスポンス(注文と提供)
外とのやり取りは「頼み(リクエスト)」と「返り(レスポンス)」の一往復でできている。
やり取りは伝票の往復
クライアントが厨房に頼むこと、それが [[requesclienrequest リクエスト(注文)です。厨房が作って返してくること、それが [[responsclienrequest レスポンス(提供)です。外とのやり取りは、この「頼み」と「返り」の一往復が基本の単位になります。
たとえるなら
リクエストは「注文の伝票」です。伝票には『何を』『いくつ』『どのテーブルへ』が書いてあります。レスポンスは運ばれてくる『料理そのもの』か、あるいは『申し訳ありません、本日は売り切れです』というお詫びの返事です。うまくいっても、いかなくても、必ず何かが返ってきます。
この「必ず何か返ってくる」というのが大事です。注文したのに何も返ってこない、というのは、料理でもトラブルですよね。プログラムでも同じで、返りが来ないとアプリは「待ちぼうけ」になります。だから返りには『成功の料理』だけでなく『失敗のお知らせ』も含まれます。
返事には「状態を表す番号」がついてくる
レストランの返事に『はい、できました』『満席です』『そのメニューはありません』があるように、レスポンスにも状態を表す番号(ステータスコード)が付いてきます。有名なのは『404(見つかりません)』です。ページが消えているときに見たことがあるかもしれません。番号は暗記しなくて大丈夫。「成功系」「頼み方の間違い系」「厨房の失敗系」の3グループがある、とだけ覚えておきましょう。
- 200番台:うまくいった(料理が無事に届いた)。
- 400番台:頼み方に問題があった(存在しないメニューを頼んだ=404など)。
- 500番台:厨房側で失敗した(コンロが壊れた、のような向こうの問題)。
返りを見ないコード
頼んだ結果を確認せず、料理が来た前提で話を進める。売り切れでもお皿を出そうとして混乱する。
返りを確認するコード
『成功だった?失敗だった?』をまず確認し、失敗ならユーザーに『今できませんでした』と伝える。
【リクエスト(伝票)】
何を: 今日の天気
どこの: 東京
【レスポンス(返り)】
状態: 200(成功)
中身: 晴れ、最高気温32度返りの中身は、多くの場合 [[jsoclienrequest という「機械にも人にも読める書き方」で運ばれてきます。JSONはDay5で触れた『ラベル付きの箱』を文字にしたようなもの、と思っておけば今は十分です。
なぜ基礎を知ると強いのか
「必ず返りが来る」「返りには成功/失敗の番号がある」を知っていると、AIに作ってもらったコードで不具合が出たとき、『どんな返りが来ているか見せて』と頼めます。原因が『頼み方(404)』か『向こうの失敗(500)』かで、直す場所がまるで変わるからです。
AIにはこう頼む
「このリクエストのレスポンスのステータスコードと中身をログに出して。失敗したときはユーザーに分かる文言を表示して」と頼むと、返りをきちんと扱うコードになります。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
ステータスコード「404」が意味するのは、たとえるとどれ?
「必ず何かが返ってくる」という性質が大事なのはなぜ?
リクエストとレスポンスの関係を、注文のたとえで説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。