1.概要
簡易的なPOSTサーバーを構築します。
クライアント側からWEBサーバーへJsonファイルをPOSTすると
そのままJSONファイルが返ってくるというものです。
webサーバーは【node.js】 + 【express】を使い、OSは【CentOS7】としました。
2.サーバーの環境を構築する
まずは【node.js】をインストールします。
[root@localhost ~]# yum install wget [root@localhost ~]# wget https://nodejs.org//dist/v9.9.0/node-v9.9.0-linux-armv7l.tar.xz [root@localhost ~]# tar -xvf node-v9.9.0-linux-armv7l.tar.xz [root@localhost ~]# cd node-v9.9.0-linux-armv7l [root@localhost node-v4.0.0-linux-armv7l]# cp -R * /usr/local/
インストールが完了したら作業フォルダを作成します。
作業フォルダは【/home/myapp】としました。
[root@localhost /]# cd home [root@localhost home]# mkdir myapp
作業用フォルダに移動して
このフォルダでプロジェクト開始!ということを【npm】に教えます。
[root@localhost home]# cd myapp [root@localhost myapp]# npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (myapp) version: (1.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to /home/myapp/package.json: { "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this ok? (yes) y
次に【express】をインストールします。
[root@localhost ~]# npm install express --saveadded 50 packages in 13.328s
- express@4.17.1
【express】コマンドを動くようにします。
[root@localhost home]# npm install -g express-generator /usr/local/bin/express -> /usr/local/lib/node_modules/express-generator/bin/express-cli.jsadded 10 packages in 6.459s
- express-generator@4.16.1
これで環境の構築は完了です。
3.app.jsを作成する
【/home/myapp】に移動して【app.js】を作成します。
コードは下記のとおりです。
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); // application/x-www-form-urlencoded app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); app.listen(3000); console.log('Start.'); app.post('/', function(req, res) { console.log(req.body); res.json(req.body); })
4.app.jsを動かす
下記のコマンドを実行します。
[root@localhost myapp]# node app.js Start.
問題なく動作したので、JsonファイルをPOSTしてみます。
その前にファイアーウォールに穴を空ける必要がありますので
ポート3000に穴を空ける設定をします。
5.ファイアーウォールを設定する
ポート3000がとおるように設定します。
[root@localhost ~]# firewall-cmd --permanent --add-port=3000/tcp success
ファイアーウォールを再起動します。
[root@localhost ~]# systemctl restart firewalld.service
再起動が完了したらfirewallの状態を確認します。
[root@localhost ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client http ports: 22/tcp 25/tcp 3000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
6.JsonファイルをPOSTする
早速JsonファイルをPOSTしてみます。
今回は
【Advanced REST client(ARC)】
を使って送ってみます。
POSTするJsonは下記のとおりです。
{ "Job":"プログラマー", "Age":"37" }
POST結果は下記のとおりです。
【ARC】
【CentOS】
[root@localhost myapp]# node app.js Start. { Job: 'プログラマー', Age: '37' }