はじめに
node.jsを触り始めて数週間経ちフォームからデータを受け取る方法がなんとなくわかってきたので
自分用の備忘録兼初心者向けの記事として書き留めておきます。
Qiitaの記事を書くのが久しぶりなので誤字や表記ミス等あるかもしれませんご了承ください(コメントで指摘してくださると助かります)
環境
- OS
- windows10
- node.js
- v12.18.4
- Express
- v4.17.1
前提条件
以下コードはすべて下記のコードが既に書かれている前提で説明していきます。
app.js
const express = require("express")
const app = express()
app.use(express.urlencoded({extended: true}));
app.set('view engine', 'ejs');
// View engineにEJSを指定していますがなんでもいいです。
//自分が好きな奴使ってください
app.get("/",(req,res)=>{
res.render("index");
})
フォーム用コード
index.ejs
<p>GET用フォーム</p>
<form action="get-check" method="GET">
<input type="text" name="user_id">
<button type="submit">送信</button>
</form>
<p>POST用フォーム</p>
<form action="post-check" method="POST">
<input type="text" name="user_id">
<button type="submit">送信</button>
</form>
GETで取得
Getでデータを送信した場合は
req.query."取得したいinputのname"
で取得ができます。
なので上記フォームからの値を取得したい場合は
req.query.user_id
とすれば取得できます。
なおreq.queryで送信された情報を連想配列で一括取得することができます。
ちなみに存在しないnameを指定するとundefinedが返ってきます。
POSTで取得
POSTでデータを送信した場合は
req.body."取得したいinputのname"
で取得できます。
あとはGETと同様にnameを指定しなければ連想配列での一括取得ができますし
存在しないnameを指定するとundefinedが返ってきます。
まとめ
GETはreq.query
POSTはreq.body
でそれぞれデータを取得することができる。