fastify json形式のPOSTデータ受け取り
fastifyはPOSTデータはjson形式を想定しており、x-www-form-urlencoded形式のデータ受信にはひと工夫必要でした。fastifyでPOSTデータ受信時、FST_ERR_CTP_INVALID_MEDIA_TYPE
POSTデータがjson形式の場合について見てみます。
プログラム修正
- {"address":"銀座"}
という形式で検索パラメーターを送信することにします。
json形式のPOSTデータは自動的にパースされ、req.bodyに設定されました。
- const fastify = require('fastify')({ logger: true })
- const postal = require('./module/postal')()
- fastify.post('/', async (req, reply) => {
- // jsonデータはreq.bodyに設定される
- const address = req.body.address
- const rows = await postal.search(address)
- return rows
- })
- fastify.listen(3000, '0.0.0.0', err => {
- if (err) throw err
- console.log(`server listening on ${fastify.server.address().port}`)
- })
動作確認
$ curl 'http://192.168.11.104:3000' --data '{"address":"銀座"}' -X POST -H 'Content-Type:application/json'
[
{"code":"0691331","address":"北海道夕張郡長沼町銀座"},
{"code":"1040061","address":"東京都中央区銀座"}
...
]