11.
POSTリクエスト
POSTリクエスト
URLエンコード
ExpressでPOSTデータを取得するには、URLエンコードする必要があります。URLエンコードしないとマルチバイト文字が文字化けします
urlencoded()
ExpressのURLエンコードは、ミドルウェアで urlencoded() を設定します。
app.use(express.urlencoded({ extended: true }))
- Expressの ver4.16 以前は「body-parser」モジュールのインストールが必要
POSTリクエスト
post()
post() でPOSTリクエストの処理ができます。
app.post('URL', (req, res) => {
})
POSTデータ取得
POSTリクエストからデータは、リクエストオブジェクトの bodyプロパティで取得します。
app.post('URL', (req, res) => {
// POSTデータ取得
var data = req.body
})
簡易ログイン認証
ログインフォームから送信されたPOSTデータで、簡単なログイン認証をしてみましょう。
.env設定
「.env」に認証用の「LOGIN_NAME」と「PASSWORD」を設定します。
HOST=localhost
PORT=3000
LOGIN_NAME=test
PASSWORD=1234
- パスワードは通常、ハッシュデータにしておく必要がありますが今回はRAWデータとします
認証処理
「ログイン名」「パスワード」を取得して認証処理を実装します。
POSTデータ取得
POSTデータは、リクエストオブジェクトのbodyに格納されています。HTMLフォームで送信された「login_name」「password」をそれぞれ取得します。
server.js
app.post('/auth', (req, res) => {
const login_name = req.body.login_name;
const password = req.body.password;
})
ログイン判別
送信データと設定データを比較してログインの判別をします。
server.js
app.post('/auth', (req, res) => {
const login_name = req.body.login_name;
const password = req.body.password;
var message = 'ログインできませんでした';
if (login_name == process.env.LOGIN_NAME && password == process.env.PASSWORD) {
message = 'ログインしました';
}
res.send(message);
})
フォーム送信確認
ログインページアクセスし、ログイン名、パスワードを送信して動作確認してみましょう。

結果

ソース
server.js
const express = require('express');
const dotenv = require('dotenv');
dotenv.config();
const HOST = process.env.HOST;
const PORT = process.env.PORT;
const app = express();
app.use(express.urlencoded({ extended: true }));
app.use(express.static(__dirname + '/public'));
app.get("/", (req, res) => {
console.log(req.body);
console.log(req.url);
console.log(req.query);
res.send("Hello Express!");
});
app.get("/profile", (req, res) => {
res.send("This is Profile page.");
});
app.post('/auth', (req, res) => {
const login_name = req.body.login_name;
const password = req.body.password;
var message = 'ログインできませんでした';
if (login_name == process.env.LOGIN_NAME && password == process.env.PASSWORD) {
message = 'ログインしました';
}
res.send(message);
})
app.listen(PORT, HOST, () => {
console.log(`Server listen: http://${PORT}:${HOST}`);
});