LoginSignup
102
91

More than 5 years have passed since last update.

ExpressでPOSTを処理するメモ

Posted at

やりたいこと

node.js - express でformを生成して、受け取った値を表示する
ググりながらやっていたら結構ハマったので多分初歩的なことですがメモとして残しておきます。

手順

jadeファイルでformを作る

index.jade
form(method="POST", target="./")
            input(type="text", name="word" value="")
            input(type="hidden", name="mode" value="input")
            input(type="submit", value="送信")

メインのapp.jsファイル(一部抜粋)

app.js
app.post('/', function(req, res) {
    console.log(req.body);
    res.render('index', { title: 'Express Sample Posted ver 0.0.1', word: req.body.word});
});

実行すると以下のようにundefinedに・・・

console.log(req.body);// undefined

body-parserっていうのがいるらしい・・・

入れてみる。

npm install --save body-parser

app.js
var bodyParser = require('body-parser');
app.use(bodyParser());

実行!!

body-parser deprecated bodyParser: use individual json/urlencoded middlewares app.js:9:9
body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing node_modules/body-parser/index.js:74:29
{ word: 'post', mode: 'input' } ←console.log(req.body)の結果

POSTの取得は出来たがdeprecated が出たため、訂正
urlencodedまたはjsonを使わなければいけないらしい。更にextended: trueを指定とのこと。

app.js
app.use(bodyParser.urlencoded({extended: true}));

deprecated もなくなったのであとは表示のみ
jadeファイルの変数は#{}で囲む

index.jade
p #{word}

無事にやりたいことが出来ましたー。

102
91
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
102
91