19.09.11 삽질 회고

피누·2019년 9월 11일
0

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. 엑세스 토큰과 핀테크 번호를 이용해서 내역 조회 (구현 완료)
profile
어려운 문제를 함께 풀어가는 것을 좋아합니다.

0개의 댓글