티스토리 뷰

BACKEND

querystring을 통해 배열도 받을수 있나요?

나를찾는아이 2024. 8. 13. 16:21
728x90
반응형

querystring을 통해 배열을 받을수 있는 방법은 여러가지가 있습니다

 

예를 들어서 여러개의 카테고리 정보를 받는 path가 있다고 가정해봅시다

 

 

aaa.com?category_name=food

 

 

그런데 category_name 이라는 변수명으로 여러개의 카테고리 정보를 받고 싶은경우에 어떻게 할수 있을까요?

 

 

1. 콤마 또는 다른 구분자를 이용해 값을 연결

 

aaa.com?category_name=food,health,beauty

 

이런식으로 category_name으로 값을 콤마나 기타 다른 구분자를 이용해 값을 받은뒤에

 

해당 값을 구분자로 쪼개어 배열을 만드는 방법입니다

 

 

 

2. 동일한 이름을 사용해 연결

 

aaa.com?category_name=food&category_name=health&category_name=beauty

 

이렇게 같은 category_name을 반복적으로 열거합니다

 

대부분의 웹프레임워크에서는 동일한 이름으로 들어온 여러개의 값을 배열로 취급합니다

 

 

3. 이름 + 브라켓을 이용해 연결

 

aaa.com?category_name[]=food&category_name[]=health&category_name[]=beauty

 

많은 언어에서 [] 이 표시는 배열을 의미하는데요

 

이름뒤에 [] 표시를 더하여 값을 열거하여 category_name이라는 이름으로 배열을 받을수 있습니다

 

 

 

총 3가지의 방법을 설명해드렸는데요

 

일부 프레임워크에서는 2번 또는 3번 방법을 지원하지 않는 경우도 있을수 있습니다

 

하지만 대부분의 모던 프레임워크들에서는 이 방법을 지원하고 있습니다

 

 

nodejs의 express에서는 1,2,3번 모두 사용가능한데요

 

2,3번의 경우 원소가 하나밖에 없는 경우 string 타입으로, 원소가 2개 이상일때 배열 타입으로 전달됩니다

 

그래서 타입으로 구분할 필요가 있습니다

 

 

 

openapi 규격에서는 이를 지원할까요?

 

openapi에서는 1번의 경우 사용자가 하나의 input 안에 여러개의 입력값을 직접 구분자를 이용해 열거해야하는데

 

2, 3의 경우는 explode 속성을 이용하여 명확하게 표시가 가능합니다

 

https://petstore3.swagger.io/#/pet/findPetsByStatus

 

 

 

 

직접 개별 원소를 하나씩 입력할수 있습니다

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함