#はじめに
今回はNode.jsのフレームワークであるExpressでHTTPリクエストを受け取るアプリケーション?を作りたいと思います。
利用用途としては
- しっかりリクエスト送れてるの?
- Expressとかnode.jsでAPIを作ってみたい
といったことが想定されます。私の場合は主に、というか9割前者ですね。JMETERでリクエストが正しく送れているか確認したかっただけです。
#実装
##下準備
まず以下のコマンドを実行します。この時、プロジェクトのディレクトリ内で行いましょう。
> npm init
あとはダイアログに従い、入力するだけです。
するとpackage.json
が作成されると思います。
次にExpressをインストールします。
> npm install express -save
このコマンドをたたけばいろいろダウンロードされ、環境が整います。
##実行するファイルを作る
const express = require('express')
const app = express()
// body-parserのおまじない
// 参照:https://expressjs.com/ja/4x/api.html#req.body
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: true }))
app.listen(3000)
app.get('/get', function (req, res) {
res.send('Receive Get request')
console.log('GETリクエストを受け取りました')
})
app.post('/post', function (req, res) {
res.setHeader('Content-Type', 'text/plain');
res.send('Receive POST request as ' + req.body.text)
console.log('POSTリクエストを受け取りました')
console.log(req.body)
})
body-parserのおまじない これかなり重要です。これがないとreq.bodyでは表示されません。
#実行してみよう
ここではVScodeのREST Clientを使います。
##GETリクエスト
GET http://localhost:3000/get
返ってくるレスポンス
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 19
ETag: W/"13-XJXW/hqJ3os48dLZM0f0yOQl3GA"
Date: Fri, 15 Nov 2019 16:02:55 GMT
Connection: close
Receive Get request
##POSTリクエスト
POST http://localhost:3000/post
Content-Type:application/x-www-form-urlencoded
text=テスト送信
返ってくるレスポンス
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/plain; charset=utf-8
Content-Length: 38
ETag: W/"26-i+FQlfv64fSmWg1IEMiZfpdw9eY"
Date: Fri, 15 Nov 2019 16:03:59 GMT
Connection: close
Receive POST request asテスト送信
#注釈
res.send('Receive POST request as ' + req.body.text)
のtextの部分を変えることでPOSTリクエストの
text=テスト送信
のtextの部分を変えることができます。
#まとめ
ほかにもjson形式のPOSTリクエストを受け取るとかできますが、今回は省略。
##参考
https://qiita.com/kefian1go/items/198d9da2240846e28a48
https://expressjs.com/ja/4x/api.html#req.body