JSON.parse

request_promise의 리턴값은 객체가 아니라 문자열이다! 이걸 객체로 사용하기 위해서는 JSON.parse를 사용해 객체로 변경해주어야 한다!!!! 이걸 놓치고 있어서 1시간 가량 뻘짓....

Content-Type

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를 하지 않아야 합니다.

공동은행 API 로직

  1. 사용자 인증 후 인증코드 발급 (아직 미구현)
  2. 인증코드를 통해 엑세스 토근 발급 저장 (구현완료)
  3. 엑세스 토큰과 핀테크 번호를 이용해서 내역 조회 (구현 완료)