Node.jsでhttpサーバー - JavaScript

f:id:utouto97:20210706233746p:plain

Node.jsでhttpサーバーを秒で建てる

前提として、Node.jsがインストール済みであるとします。

では、速攻でhttpサーバーを構築します。

まず、ファイルapp.jsを作成します。

$ touch app.js

ファイルを編集します。
次のようにします。

     1  const http = require('http');
     2
     3  const hostname = '127.0.0.1';
     4  const port = 3000;
     5
     6  const server = http.createServer((req, res) => {
     7    res.statusCode = 200;
     8    res.setHeader('Content-Type', 'text/plain');
     9    res.end('Hello ' + name + '!');
    10  });
    11
    12  server.listen(port, hostname, () => {
    13    console.log(`Server running at http://${hostname}:${port}/`);
    14  });

nodeコマンドで実行します。

$ node app.js

これで、localhostの3000番ポートでサーバーがリッスンしています。
ブラウザのURL欄にhttp://localhost:3000と入れてアクセスします。

ブラウザにHello world!と表示されました。

GETパラメータを処理する。

上で建てたhttpサーバーをカスタマイズしていきます。

まずは、パラメータを処理できるようにします。
現時点で、GETメソッドで、http://localhost:3000にアクセスすると、Hello world!と表示されます。
これにGETパラメータを付与し、Hello {name}!と表示するように変更します。

今回、サーバーを建てるのにhttpモジュールを使っています。
このモジュールでは、req.urlでリクエストのURLを取得できます。

これをurlモジュールというモジュールで解析して、パスとパラメータに分けることができます。
パラメータとしてnameを渡します。
このパラメータが渡されなかった場合は、name=worldとします。

変更後のコードは以下のようになります。

     1  const http = require('http');
     2  const url = require('url');
     3
     4  const hostname = '127.0.0.1';
     5  const port = 3000;
     6
     7  const server = http.createServer((req, res) => {
     8    var url_parse = url.parse(req.url, true);
     9    var name = url_parse.query['name'] || 'world';
    10    res.statusCode = 200;
    11    res.setHeader('Content-Type', 'text/plain');
    12    res.end('Hello ' + name + '!');
    13  });
    14
    15  server.listen(port, hostname, () => {
    16    console.log(`Server running at http://${hostname}:${port}/`);
    17  });

変更点は2行目、8行目、9行目、12行目です。

再び、ブラウザからアクセスしてみます。
まず、http://localhost:3000にアクセスすると、Hello world!と表示されます。
次に、http://localhost:3000?name=Kenにアクセスすると、Hello Ken!と表示されます。

参考 入門ガイド | Node.js

終わり