request_promise의 리턴값은 객체가 아니라 문자열이다! 이걸 객체로 사용하기 위해서는 JSON.parse
를 사용해 객체로 변경해주어야 한다!!!! 이걸 놓치고 있어서 1시간 가량 뻘짓....
API 요청을 보낼 때 Content-Type을 잘 확인해야 한다. application/x-www-form-urlencoded
인데 계속해서 application/json
으로 보내고 있었다. 그러니 서버쪽에서는 인식을 못하니 파라미터 오류가 뜰 수 밖에... 아래는 공동은행 API 파라미터 오류 119번에 대한 답글이다.
웹서버의 파라미터 수신 스펙이 JSON형태라면 Http Header의 Content-type은 ‘application/json’ 으로 세팅하셔야 합니다. (RFC4627)
또한 이렇게 Content-type을 application/json으로 명시해줄 경우 반드시 문자열화(Stringify)를 하셔야 합니다.
기본적으로 Ajax는 데이터값이 String이 아닐 경우 Pre-Process를 통해 Data Object를 Query String형태(?key=value&key=value&…)로 변경시킵니다.
결국 서버에서는 JSON형태가 아니기에 잘못된 파라미터로 인식하고 오류로 응답하게 됩니다.
또한 Content-type이 “application/x-www-form-urlencoded”(Ajax default) 라면 데이터값이 Ajax에서 Pre-Process하여 만드는 Query String과 같이 ?key=value&key=value… 같은 Key-Value pair형태로 인코딩되어 전송되기 때문에 Stringify를 하지 않아야 합니다.