씨네
공부하는 개발자 강씨네
씨네
  • 분류 전체보기 (460)
    • Web (21)
      • HTML (11)
      • CSS (10)
    • JS 관련 (49)
      • JavaScript (27)
      • JQuery (22)
    • TS 관련 (15)
      • TypeScript (15)
    • NodeJS (7)
      • NodeJS (7)
    • 따라하며 배우는 시리즈 (23)
      • NodeJS & ReactJS Basic (23)
      • NodeJS & ReactJS Movie (0)
      • NodeJS & ReactJS Youtube (0)
      • NodeJS & ReactJS ChatBot (0)
    • SPA (14)
      • React (14)
      • Vue (0)
      • Anguler (0)
    • Java 관련 (118)
      • Java (52)
      • JDBC (6)
      • JSP & Servlet (18)
      • Spring Legecy (38)
      • SpringBoot (4)
    • Python (26)
      • Python (20)
      • PyMongo (1)
      • Django (5)
    • Git (24)
      • Github (24)
    • RDB (22)
      • Oracle (21)
      • MySQL (1)
    • NoSQL (5)
      • MongoDB (5)
    • OS (4)
      • Linux (4)
    • 빅데이터 (2)
      • hadoop (2)
    • IDE (20)
      • eclipse (11)
      • VSCODE (4)
      • VisualStudio (1)
      • IntelliJ (1)
      • PyCharm (1)
      • DBeaver (2)
    • Install (3)
      • Tomcat (1)
      • Docker (1)
      • Anaconda (1)
    • 오류&에러 (28)
      • TS (2)
      • NodeJS (7)
      • SQL (8)
      • Java (1)
      • Spring (4)
      • Git (6)
      • 기타 (0)
    • 알고리즘 (67)
      • 수열 (1)
      • 백준(backjoon) (39)
      • Programmers (27)
    • 자격증 (5)
      • SQLD (5)
    • 기타 (2)
    • IT유튜브로 지식쌓기 (2)

공지사항

인기 글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
씨네

공부하는 개발자 강씨네

[NodeJS] request모듈의 qs에 Object.assign 사용하여 배열넣기
NodeJS/NodeJS

[NodeJS] request모듈의 qs에 Object.assign 사용하여 배열넣기

2022. 12. 19. 08:53
728x90

업무를 보던 도중 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 을 이용하면 똑같이 해결할수 있었다.

728x90
저작자표시 (새창열림)

'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
    'NodeJS/NodeJS' 카테고리의 다른 글
    • [NodeJS] 공식문서와 함께하는 package.json에 대한 모든 것 3탄
    • [NodeJS] 공식문서와 함께하는 package.json에 대한 모든 것 2탄
    • [NodeJS] 공식문서와 함께하는 package.json에 대한 모든 것 1탄
    • [NVM] nvm 설치하기
    씨네
    씨네
    개발자 씨네가 공부하는 내용을 기록 겸 공유하는 블로그입니다!

    티스토리툴바