반응형
NodeJS의 body parser
설정을 고쳐 해결
코틀린 retrofit API로 HashMap 객체 POST 전송
Retrofit Interface.kt
@POST("/") @Headers("accept: application/json", "content-type: application/json") fun postRequest( @Body params: Map<String, String> ): Call<ResponseDC>
MainActivity.kt
// Hashmap 객체 생성 val map = HashMap<String, String>() map.put("id", "0") map.put("pwd", "123") map.put("nick", "surimi") // 서버로 전송 server.postRequest(map).enqueue((object : Callback<ResponseDTO> { override fun onResponse( call: Call<ResponseDTO>, response: Response<ResponseDTO> ) { Log.d("response : ", response?.body().toString()) println(response?.body()?.data) println(response?.body()?.data?.id) println(response?.body()?.data?.pwd) println(response?.body()?.data?.nick) } override fun onFailure(call: Call<ResponseDC>, t: Throwable) { } }
NodeJS Server.js
app.post(`/`, (req, res) => { var { id, nick, pwd } = req.body; console.log("POST " + id, nick, pwd); res.send({ "result": "POST 호출", "data": { id, nick, pwd } }); })
post로 받은 데이터가 담기는 req.body를 찍어보면 body 객체안에는 아무것도 담겨있지 않았는데,
var bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) // for parsing application/json
body parser 설정이 제대로 되어있지 않아 JSON 객체를 읽어오지 못하는 거였다.
고쳐주니 해결.
반응형