とあるWeb屋の備忘録

とあるWeb屋の備忘録。たまに雑記。

Node.js+Expressでpostを使う!

Node.js+Expressでpostを使う!

Node.js+Expressでgetを使う!の続き。

前回やったこと
・Node.jsでgetを扱う。(クエリによってページ内の文言出しわけ)

今回はExpressでのpostについて書いていきたいと思います。

POST送信について

postはHTTPメソッドのうちの一つで、HTTPメソッドにはほかにもget,put,deleteとかあります。
HTTPメソッドっていうのは、ブラウザからサーバーに送るリクエストの種類のことです。
postだとHTTPリクエストボディに値を入れてサーバに送る。

以下の例はresultページにformからアクセスしたときに、formの値を取ってresultページに表示しています。

result.js

router.post('/', function(req, res, next) {

  var name = req.body.name;
  var age = req.body.age;

  res.render('result', {
    title: "結果!",
    name: name,
    age: age
  });

});

req.bodyでHttpレスポンスボディから値を取得しています。.nameや.ageは値を取り出すためのキーです。

app.js

var resultRouter = require('./routes/result');
app.use('/result',resultRouter);

index.ejs

<h1><%= title %></h1>
<p>Welcome to <%= title %></p>

<form action="./result" method="post">
    <input type="text" name="name" placeholder="name">
    <input type="text" name="age" placeholder="age">
    <input type="submit" value="送信!">
</form>

result.ejs

<body>
    <h1このページのタイトルは><%= title %>です!</h1>
    <ul>
        <li>名前:<%= name %></li>
        <li>年齢:<%= age %></li>
    </ul>
</body>

これでlocalhost:3000/にアクセスしてform入力から送信ボタンを押すとresultページにpost通信されます!
あとはresult.jsのミドルウェア関数で処理してあげる感じです。 resultページに入力した名前と年齢が表示されるかと思います。

以上がpostの基本的な使い方でした!