Node.jsサーバにおけるHTTPリクエスト処理


前提

この記事は以下の方を対象に記事を書いています。


  • npmコマンドについて理解している

  • Node.jsの環境構築が完了している

  • Node.jsでサーバを立ててリクエスト処理を行いたい


HTTPリクエスト処理について

自分の備忘録とNode.js初心者用に、

Node.jsサーバ上でHTTPリクエストごとに処理を行う方法を説明します。

まず、HTTPリクエストとは基本的に

クライアント側からWebサーバ側に要求を行うことを指します。

その際、リクエストの種類によってWebサーバ側は

クライアント側に対してレスポンス(返答)を返す必要があります。

スクリーンショット 2019-03-13 15.10.17.png


サーバの構築

HTTPリクエストの種類には、

主なものとしてGETリクエストとPOSTリクエストがあります。

以下でNode.jsサーバの構築とリクエスト処理について説明します。

※ 規格はES6で記述します。


Node.jsサーバの構築

Node.jsサーバの構築に必要な

以下のnpmモジュールをインポートします。

- request

- http


index.js

const require = require('require'),

http = require('http');


続いて、HTTPサーバを構築します。

わかりづらい箇所は随時コメントで説明します。


index.js

//httpモジュールを利用して、HTTPサーバを作成します

//createServer関数の引数であるコールバック関数を通して
//リクエストオブジェクトとレスポンスオブジェクトが利用可能
const http_server = new http.createServer((req, res)=>{
//このスコープ内にサーバの処理を記述します
//レスポンスヘッダの定義の設定
res.setHeader('Access-Control-Allow-Headers','Origin, X-Requested-With, Content-Type, Accept');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
}).listen(8080); //ポート番号の指定


リクエストごとの処理

クライアントから送られてくるリクエストの種類の情報は、

リクエストオブジェクトに紐付けられている

methodプロパティを参照する必要があります。


index.js

const require = require('require'),

http = require('http');

const http_server = new http.createServer((req, res)=>{
res.setHeader('Access-Control-Allow-Headers','Origin, X-Requested-With, Content-Type, Accept');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
//リクエストごとに処理を記述
if(req.method==="POST"){
//POSTリクエストを受け取った際のレスポンス処理
//リクエストの終了処理
req.on("end", ()=>{
res.writeHead(200, {"Content-Type": "application/json"});
res.write();
res.end();
});
} else if(req.method==="GET"){
//GETリクエストを受け取った際のレスポンス処理
//リクエストの終了処理
req.on("end", ()=>{
res.writeHead(200, {"Content-Type": "application/json"});
res.write();
res.end();
});
}
}).listen(8080);


このリクエスト処理はAPIサーバなどに利用できます。

レスポンスオブジェクトやリクエストオブジェクトのプロパティも

色々と面白いので一度内容を確認するのも面白いかもしれません。

間違いなどご指摘ありましたら気軽にお願いします。