node+expressのインストールからget/post引数まで
参考URL
https://qiita.com/tamura_CD/items/e3abdab9b8c5aa35fa6b
1. expressのインストール
1 2 3 4 5 6 7 8 9 10 11 12 13 |
node -v v14.17.3 npm -v 6.14.13 # epressをグローバルでインストール。カレントディレクトリには変化なし npm install -g express + express@4.17.1 added 50 packages from 37 contributors in 4.7s # こっちじゃないとexpressコマンドが使えなかった・・・。 npm install -g express-generator |
2. expressプロジェクト生成。フレームワークらしくMVC的なファイル群が作成される
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
express myapp warning: the default view engine will not be jade in future releases warning: use `--view=jade' or `--help' for additional options create : myapp\ create : myapp\public\ create : myapp\public\javascripts\ create : myapp\public\images\ create : myapp\public\stylesheets\ create : myapp\public\stylesheets\style.css create : myapp\routes\ create : myapp\routes\index.js create : myapp\routes\users.js create : myapp\views\ create : myapp\views\error.jade create : myapp\views\index.jade create : myapp\views\layout.jade create : myapp\app.js create : myapp\package.json create : myapp\bin\ create : myapp\bin\www change directory: > cd myapp install dependencies: > npm install run the app: > SET DEBUG=myapp:* & npm start |
3. expressプロジェクトに必要なパッケージをインストールする。
この時点で6MBくらいある
1 |
npm install |
4. expressアプリ(Webサーバ)を起動してみる
1 2 |
cd myapp npm start |
Express
Welcome to Express
と表示されればOK!
WebサーバはCtrl+Cでキャンセルして終了
5. hello,worldを表示してみる
routes/index.jsを修正
1 2 3 4 5 6 7 8 9 10 |
var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { // res.render('index', { title: 'Express' }); res.send("Hello World"); }); module.exports = router; |
6. API実装
/myapp/routesフォルダに、samples.jsを追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var express = require('express'); // expressのパッケージ var router = express.Router(); // expressのルーティング // app.jsで指定されたルーティングの直下だったら、以下のJSONを返す router.get('/', function(req, res, next) { var param = {"値":"これはサンプルAPIです"}; res.header('Content-Type', 'application/json; charset=utf-8') res.send(param); }); // app.jsで指定されたルーティングの直下に/helloだったら、以下のJSONを返す router.get('/hello', function(req, res, next) { var param = {"result":"Hello World !"}; res.header('Content-Type', 'application/json; charset=utf-8') res.send(param); }); // 記述したルーティングを返す module.exports = router; |
myapp/app.jsに、ルーティングを追加(indexやusersの後ろに追加)
1 2 3 4 |
// API用 var sampleRouter = require('./routes/sample'); // sample用ルータ app.use('/sample', sampleRouter); |
npm startでWebサーバを起動してアクセスすると、JSONを返す
http://localhost:3000/sample/
http://localhost:3000/sample/hello
7.URLからGET引数をもらう
1 2 3 4 5 6 7 8 9 |
// http://localhost:3000/sample/hello/ps5?shop=amazon&price=50k // req.params.goods = ps5 // req.query.shop = amazon // req.query.price = 50k router.get('/hello/:goods', function (req, res, next) { var param = {"result":"goods "+ req.params.goods + " !","shop name":req.query.shop + "(price" + req.query.price + ")"}; res.header('Content-Type', 'application/json; charset=utf-8') res.send(param); }); |
http://localhost:3000/sample/hello/ps5?shop=amazon&price=50k
{“result”:”goods ps5 !”,”shop name”:”amazon(price50k)”}
8. post引数をもらう
1 2 3 4 5 6 |
// curl -X POST -H "Accept: application/json" http://localhost:3000/sample/ -d "card=christmas" router.post('/', function(req, res, next) { var param = {"値":"POSTメソッドのリクエストを受け付けました","bodyの値":req.body.card}; res.header('Content-Type', 'application/json; charset=utf-8') res.send(param); }); |