업무를 보던 도중 api를 통해 통신을 하려는데 글세 쿼리스트링에 배열을 넣어야하는 일이 있었다...
세상에,, get방식 쿼리스트링에 배열이라니 ㅠㅠ
쿼리스트링에 일단 대괄호를 넣는것부터 쉽지 않았다.
일부분만 보여주자면 api 문서에 따르면 ?id[]=1&id[]=2&id[]=3 이런식으로 전송을 해야했는데 이런식으로 전송을 하게 되면 대괄호가 인코딩 되어 전송이 되어서 그런지 통신이 제대로 되지 않았다.
PostMan을 사용하여 전송해서 피들러로 데이터를 따보았을 때는 id[]=1 의형태로 URL이 잘 전송이 됐는데 노드를 통해 request를 쐈을때는 id%5B%5D=1 의 현태로 전송이 되는 것이엇다...
url에 직접 입력하는 방식으로 사용해도 되지만 나의 경우는 그런식으로 사용할수가 없는 구조였음... 설명하기는 복잡하지만,,,
그래서 가장 먼저 부린 꼼수는 이 방법이다.
억지로 형태를 만들어준것... 어차피 이렇게 만들어도 쿼리스트링에 들어가서 전송되는 형태는 같지 않은가??
뭐 테스트를 위해 시도해본 방법이고 당연히 실패!
두번째 시도한 방법은
[
{ id[]: 1 },
{ id[]: 2 },
{ id[]: 3 },
]
형태로 데이터를 전달후 {}를 벗기는 방식이었다.
꾀나 그럴듯 했지만...
...을 통해 {}를 벗기는 순간
{
'0': {id[]: 1},
'1': {id[]: 2},
'2': {id[]: 3},
}
의형태로 데이터가 바뀌는 것이었다.. 그렇다... key가 없으니 인덱스 순서대로 인덱스가 key로 정해지는 것이었다.
url에 직접 넣는 방법으로는 여러가지가 있고 qs 라는 라이브러리로 쿼리스트링을 만들기 편하게 할수도 있지만 (기회가된다면 qs 라이브러리 사용하는 것을 나중에 따로 다뤄 보기로...) 나는 그렇게 할수가 없다... qs 안에 넣어야 한다 무.조.건
나는 돌이었다... 이렇게 간단한 문제를 해결을 못하고 있다니..
Object.assign을 이용하면 될것을...
이 방식이라면 [{id[]: 1}, {id[]: 2}, {id[]: 3}]
{id[]: 1, id[]: 2, id[]: 3}
형태로 데이터가 바뀔 것이고 이것을 적용하면 되는 것이었다...
+ 나중에 시도해본건데 api 문서에는 id[] 이형태로 넣으라고했지만 사실 이게 의도하는게 id[0], id[1] 과같이 인덱스 순서대로 넣으라는 것을 의미 했던것같다.. 뭐 결과론 적으로는 둘다 되니까 데이터 형식에 인덱스만 추가해주었는데 인덱스가 있어서 더 골치아플뻔 한거 Object.assign 을 이용하면 똑같이 해결할수 있었다.
'NodeJS > NodeJS' 카테고리의 다른 글
[NodeJS] 공식문서와 함께하는 package.json에 대한 모든 것 3탄 (1) | 2023.01.21 |
---|---|
[NodeJS] 공식문서와 함께하는 package.json에 대한 모든 것 2탄 (0) | 2023.01.17 |
[NodeJS] 공식문서와 함께하는 package.json에 대한 모든 것 1탄 (0) | 2022.11.21 |
[NVM] nvm 설치하기 (0) | 2022.09.22 |
[NodeJS] 노드 설치하기! (0) | 2022.05.20 |