サーバーとリクエスト
サーバーは待っているプログラム
ここまでのスクリプトは、動かすと最後まで走って終わりました。サーバーは違います。起動したあと、終わらずに待ち続けます。
待っているのはリクエストです。誰かが「商品一覧をください」と言ってくるまで何もせず、来たら応答を返し、また待ちに戻ります。この繰り返しがサーバーの仕事です。
リクエストの中身
ブラウザや React アプリから届くリクエストには、少なくとも次の 2 つが入っています。
| 要素 | 例 | 意味 |
|---|---|---|
| メソッド | GET POST | 何をしたいのか |
| パス | /items /items/1 | どれに対してか |
GET /items なら「商品一覧を見せて」、POST /items なら「商品を登録して」です。動詞がメソッド、目的語がパスだと考えると読みやすくなります。
応答の中身
返すほうにも決まった形があります。
プレーンテキスト
ステータスコード 200
本文 {"id":1,"name":"レザースニーカー"}ステータスコードは、うまくいったかどうかを表す 3 桁の数字です。よく使うものは次のとおりです。
| コード | 意味 |
|---|---|
| 200 | うまくいった |
| 201 | 新しく作った |
| 404 | そんなものは無い |
| 500 | こちらの都合で失敗した |
数字だけで結果が伝わるので、相手のプログラムは本文を読む前に成否を判断できます。
ポートという待ち受け口
サーバーは番号の付いた口で待ちます。これがポートです。
プレーンテキスト
http://localhost:3000/items3000 がポート番号、/items がパスです。同じパソコンの中で複数のサーバーを動かせるのは、それぞれが別のポートで待つからです。逆に、すでに使われている番号で起動しようとすると失敗します。
手を動かす
演習では、メソッドとパスの組み合わせから、そのリクエストが何を求めているのかを判定する関数を書きます。サーバーが最初にする「どの依頼なのかを見分ける」仕事を、自分で書いてみてください。
要件
GETと/itemsなら商品一覧を返しますPOSTと/itemsなら商品を登録しますGETと/healthなら動いているか答えます- そのどれでもないときは
対応していないリクエストです
入出力例
describeRequest("GET", "/items") → "商品一覧を返します"
describeRequest("POST", "/items") → "商品を登録します"
describeRequest("GET", "/health") → "動いているか答えます"
describeRequest("GET", "/users") → "対応していないリクエストです"
describeRequest("DELETE", "/health") → "対応していないリクエストです"ヒント
編集 ゆめさく編集部