なんだかGoodVibes

日々の勉強メモです。

【Node】GETとPOSTのデータを受信する

こんにちは。
本日は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' ]



以上です。