こんにちは。
本日はNodeメモです。
概要
GETもしくはPOSTデータを受信して、
データが正しく送信されているか確認したい。
今回使用するモジュールは
- http
- url
となっています。
サンプルコード
const http = require('http') const url = require('url').URL const httpStr = 'http://' const server = http.createServer((req, res) => { let u = `${httpStr}${req.headers.host}${req.url}` let info = new url(u) if (req.method === 'GET' ) { console.log('[GET] Receive!') let params = info.searchParams console.log(params) res.end() } else if (req.method === 'POST') { let d = '' req.on('data', function (data) { d += data }) req.on('end', function () { console.log('[POST] Receive!') console.log(d) res.end() }); } }) server.listen(8080)
動作確認
GET
curlコマンドを実行します。
複数のパラメータを渡したかったので&をエスケープしています。
curl -X GET http://localhost:8080/mypage?id=1\&name=Bob
結果は以下のようになります。
[GET] Receive! URLSearchParams { 'id' => '1', 'name' => 'Bob' }
特定のパラメータを取得したい場合は、get()を使用します。
console.log(`id = ${params.get('id')}`) console.log(`name = ${params.get('name')}`)
結果は以下です。
id = 1 name = Bob
POST
curlコマンドを実行します。
複数のパラメータを渡したかったので&をエスケープしています。
curl -X POST -d 'id=1&name=Bob' http://localhost:8080/
結果は以下のようになります。
[POST] Receive! id=1&name=Bob
&で分割(split)するともう少し見やすくなります。
[POST] Receive! [ 'id=1', 'name=Bob' ]
以上です。