🪛

Node jsで簡単にServerを作ってみる①

2024/06/08に公開

Server起動

nodejsでserverを簡単に作ってみました!
簡単に作ったので複雑な記述は入ってないです
起動はnodemonでしました!

serverを作るためにはhttpモジュールを使います!
ローカル環境でhttpsを使うと開発環境設定が難しくなるので開発する時だけはhttpを使います!

2-http.js
const http = require("http");
const http2 = require("http2");

次、createServerでサーバを作ります!
server portを決めてserverを開きます!listenでserver portを設定します

2-http.js
const server = http.createServer((req, res) => {
    console.log("起動中...");
}).listen(8080);

nodemone 2-http.jsで起動するとserverが起動していることが見れます

この時ブラウザでぐるぐる曲がるだけてページが出ないです
serverでresponseを設定してないとブラウザはブラウザでぐるぐる曲がって落ちちゃいます!
resでserverの反応を設定します!

2-http.js
http.createServer((req, res) => {
    console.log("起動中...");
    res.write("Hello!!!");
    res.end();
}).listen(8080);

res.end();を呼び出してserverがこれ以上データを送信しないことを教えて
serverのresponseが完了させてページのローディングを終わりにします!
8080で Hello!!!が見えるようになりました!

英語だけではなく違う言語を使いたい時はwriteHeadを使って追加したらできます!

  res.writeHead(200, { "content-Type": "text/html; charset=utf-8" });

HTML呼び出す

今回はurlによるhtmlを読んできます!
htmlを使うためはsetHeader設定する必要があります!上にあるwriteHeadでもうすでに設定した場合は別で設定は必要ないです!

res.setHeader("Content-Type", "text/html");

htmlを呼び出す時はnodeモジュールのfsが必要です!
一応urlを先に設定してcreateReadStreamを使ってディレクトリにあるhtmlを持ってきます
その後、pipe()でresを連結させます!

2-html.js
const http = require("http");
const fs = require("fs");

const server = http.createServer((req, res) => {
  console.log("起動中...");
  res.writeHead(200, { "content-Type": "text/html; charset=utf-8" });
  const url = req.url;
  if (url === "/") {
    const read = fs.createReadStream("./html/index.html");
    read.pipe(res);
  }
});
server.listen(8080);


この時は res.end();を消さないとダメです!
pipe()のストリームの終了を自動的に処理するためです。
pipe()メソッドは内部でstream.on('end', callback)を使用してデータ送信が終了するとres.end()を呼び出します。したがって、pipe()を使用した後に別途res.end()を呼び出す必要ないです!
url設定で違うページのhtmlも呼び出します!

2-html.js
const server = http.createServer((req, res) => {
  console.log("起動中...");
  res.writeHead(200, { "content-Type": "text/html; charset=utf-8" });
  const url = req.url;
  if (url === "/") {
    const read = fs.createReadStream("./html/index.html");
    read.pipe(res);
  } else if (url === "/project") {
    const read = fs.createReadStream("./html/project.html");
    read.pipe(res);
  } else {
    const read = fs.createReadStream("./html/not-found.html");
    read.pipe(res);
  }
});
server.listen(8080);


結論

Node.jsで簡単なserverを作る方法とURLによるhtmlページを呼び出す方法を調べました!
これより複雑な機能もやってみたいと思います!

Discussion