はじめに
今回はNode.jsのフレームワークであるExpressでHTTPリクエストを受け取るアプリケーション?を作りたいと思います。
利用用途としては
- しっかりリクエスト送れてるの?
- Expressとかnode.jsでAPIを作ってみたい
といったことが想定されます。私の場合は主に、というか9割前者ですね。JMETERでリクエストが正しく送れているか確認したかっただけです。
実装
下準備
まず以下のコマンドを実行します。この時、プロジェクトのディレクトリ内で行いましょう。
> npm init
あとはダイアログに従い、入力するだけです。
するとpackage.json
が作成されると思います。
次にExpressをインストールします。
> npm install express -save
このコマンドをたたけばいろいろダウンロードされ、環境が整います。
実行するファイルを作る
index.js
constexpress=require('express')constapp=express()// body-parserのおまじない// 参照:https://expressjs.com/ja/4x/api.html#req.bodyconstbodyParser=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