소셜 로그인(kakao) 구현 코드를 보던 중
axios
.post(`${url}?grant_type=${grantType} ... `,
{
headers: {
"Content-type": "...",
}
});
저 axios 첫번째 인자의 길이가 생각보다 길어서 수정을 했는데 거기서 또 오류를 맞이했다.
1작성 1오류,,?
axios
는 Javascript로 API 통신을 한다 하면 대표적으로 등장하는
promise기반 HTTP 클라이언트 이다.
참고 문서: Axios Docs
리액트에 대해 아무것도 모르는 채로 프로젝트에 적용해야 했었을 때가 있었는데 그때 폭풍 검색으로 처음 접한 axios
이제는 API 통신이 필수인 시대여서 js
로 진행하는 프로젝트시 도움을 많이 받고 있다.
무튼 문제가 무엇이냐
일단 axios
의 기본 사용방법은 아래와 같고
axios({ method, url[, data , ... ]})
// 혹은
axios.post(url[, data, config, ...])
axios
로 카카오와 통신하는 코드를 작성했고
그 코드는 아래와 같았는데
axios
.post(url + '엄청 긴 params', { header });
아래 코드 형식으로 수정을 했더니
axios.post(url, { header, params });
에러가 나는것이었다! 😵
header
와 params
를 같이 넣는 것은 문제가 아니었고 분명 고치기 전에는 잘 동작을 하는 코드였다.
python
으로 kakao 로그인 구현했을 때도 같은 형식으로 넣어서 보냈기 때문에 params
를 data
로도 해보고 json형식으로도 해보고 삽질을 좀 하다가 검색을 해보니...
바로 해결이 됩니다.
// 최종 수정 코드
axios.post(url, {}, { headers: ~, params: {}});
일단
params
는 객체 혹은URLSearchParams
객체여야 한다
는 것이 공식 문서에 나와있기 때문에 json으로 바꿨던 삽질은 잘못된 방식이었고
왜!!!
쿼리 파라미터가 포함된 url로 요청을 보낼 땐
두번째 위치에 header
가 있어도 제대로 동작하다가
params
를 나누면 빈 객체를 넣으라는 건지 모르겠다.
합리적 의심은
※ 지극히 주관적인 생각입니다.
※ 혹시 아시는 분이 계시다면 말씀해주세요 ㅠ.ㅠ전자는
url
에서 원하는 파라미터를 다 찾았기 때문에 OK
후자는url
에서 원하는 파라미터가 없어서config
(세번째 인자)로 갔는데 세 번째 인자가 없어서 Failed
이지만 내 생각이라서,,ㅋ ㅋ ㅋ
axios.post
로 요청 보낼 때 잘 작성한것 같은데 오류가 난다면?
두 번째 인자에 빈 객체 혹은 null
을 한 번 넣어서 보내보자!
그래도 안되면 다른 부분에서 문제가 있는걸로,,
이유는 다시 열심히 찾아보고 알게 된다면 수정하겠습니다😥
출처:
같은 문제를 겪으신 선생님의 글 https://okky.kr/article/620647
Axios 공식문서 https://axios-http.com/kr/docs/post_example
늘 감사합니다,, 글을 써주시는 모든 분들 😍
get과 달리 post는 url, data, option 순서라서 그런것 같습니다~