Help us understand the problem. What is going on with this article?

シンプルなNodeサーバ

More than 1 year has passed since last update.

POSTでjsonオブジェクトでパラメータなり何かを投げるとなにかJSONで投げ返してくるサーバを超簡単に作る

前回書いた https://qiita.com/makainuma/items/26e104138d864b2d8034 が更に簡略化できたので書いておく。

モジュールとしてこんなのを考える

exports.body = function(req, act) {
    console.log(req.body);
    let json_data = {"Name":"dummy1"};
    act(json_data);
}

req.bodyが送ってもらったPOSTで投げ込んだjsonオブジェクトのはずで、それをもとに何か処理を行って結果のオブジェクトをjson化したものがjson_dataであるとする。これを送り返させる。

これがmodules/mod1.jsだとして、それを呼び出す側は

const express = require('express')
const app = express();

app.use(express.urlencoded( {extended:true} ));
app.use(express.json());

app.use((req, res, next) => {
  res.header("content-type", "application/json;charset=utf-8");
  next();
});

const modules = [
  ['/mod1', require('./modules/mod1.js')],
  ['/mod2', require('./modules/mod2.js')],
  ['/mod3', require('./modules/mod3.js')],
];

modules.map((mod) => {
  app.post(mod[0], function(req, res) {
    mod[1].body(req, (ans) => {
      res.json(ans)
    });
  });
})

app.listen(3000, () => console.log('listening on port 3000!'))

のように記述する(mod1, mod2, mod3 と同じようにして複数機能を持たせたものとする)。
これをapp.jsだとして、npm install expressしておいてnode app.jsして起動。

投げる側は

curl -X POST http://localhost:3000/mod1 -H "Accept: application/json" -H "Content-type: application/json" -d '{ "param": "p0001" }

で投げる

makainuma
倒行逆施
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away