FastAPI - 쿼리 매개변수

2025. 8. 26. 18:21Programming Language/Python

반응형

이전에 경로에 매개변수를 전달할 수 있는 방법을 확인했었다.

이번엔 쿼리 스트링을 사용해서 매개변수를 전달하면 이 값을 받아 사용할 수 있는 방법을 확인해보자.

 

1. 쿼리 매개변수

먼저 단순하게 경로를 받아줄 메서드를 하나 만들어주자.

우선 정상적으로 접근할 수 있는것을  확인했다.

 

자바에서 쿼리 스트링의 경우는 경로?param=value&param2=value2 와 같이 전달하면서 값을 받아 사용할 수 있게 해줬었는데 FastAPI도 크게 다를게 없다.

다만 서버 측에서는 기존에 경로를 통해서 받는 것이 아니라 매개변수 쪽에 선언을 하고 사용하게 된다.

요청을 보낼때 위 변수명에 맞는 쿼리 스트링을 전달해보면 

이렇게 값을 받아서 사용할 수 있는 것을 볼 수 있다.

 

다만 이렇게 사용한다면 쿼리 스트링을 무조건 전달해야만 사용이 가능한 형태가 되어 버리는데 값을 전달하지 않으면

이렇게 에러가 난다.

그래서 이렇게 쿼리 스트링으로 값을 받을 경우 기본값을 설정해줘야만 한다.

이러고 다시 쿼리스트링 없이 요청을 해보면

이렇게 정상적인 출력을 하는 것을 볼 수 있다.

 

물론 이런 부분들은 다 Swagger UI 내부에서 확인이 가능하다 

어떤 타입을 넣어야하는지, 기본값이 뭔지도 다나옴..

 

추가로 기본값의 지정을 None으로 설정하는 경우도 있는데 이때에는 Union을 사용해서 선택적으로 값을 선택할 수 있다.

물론 str의 경우도 

이렇게 사용할때 문제 없이 사용되는데 정적 검사기에 따라서 이게 에러를 벹을 수 도 있다.

정적 검사기 입장에서는 str인데 None을 전달하는게 오류라고 생각될 수 있기 때문이다.

 

먼저 typing의 Union을 import 하고 

아래와 같이 타입을 Union[type1, type2]과 같이 선언한다 

이는 해당 변수는 str이 될수도 None타입이 될 수 도 있다는 선언으로 들어오는 값에 맞춰 자동으로 타입이 지정된다.

 

동작은 param1 : str = None과 동일하고 응답 또한 동일하다

 

쿼리 스트링으로 전달되는 값들은 순서를 따로 따지지 않는다

그렇기에 변수의 순서가 다르게 전달되더라도 서버에서 알아서 맵핑해서 값을 사용한다.

 

2. bool 타입의 매개변수

쿼리스트링으로 받을 값의 타입이 bool인 매개변수를 선언했다면 

이때 값을 받을 수 있는 목록은 아래와 같다

  • True로 인식되는 값: true, True, 1, on, yes
  • False로 인식되는 값 : false, False, 0, off, no

이 외의 값이 들어오면 검증에러(422 Unprocessable Entity)를 벹는다

 

3. 여러 경로/쿼리 매개변수

경로와 쿼리를 통한 매개변수를 한쌍 이상을 사용하는 것도 가능하다.

보면 경로 매개변수와 쿼리 매개변수를 동시에 받으면서 경로 매개변수를 한번에 다수 받는 것을 볼 수 있다.

이에 요청에 값을 전달하기 위해서는 

http://localhost:8000/query/param1/midquery/param2?param1=test&param2=1234&bool_param=off

이렇게 전달하면

이렇게 모든 데이터를 받아오는 것을 볼 수 있다.

 

 

# 만약 필수로 매개변수를 전달해줘야만 한다면 기본 값을 할당하는 부분을 없에고 타입만 지정해주면 값을 전달해줘야만 해당 URL에 정상적으로 도달할 수 있게 만들 수 도 있다.

반응형

'Programming Language > Python' 카테고리의 다른 글

FastAPI - 쿼리 매개변수 및 문자열 검증  (1) 2025.08.27
FastAPI - Request Body  (1) 2025.08.27
FastAPI 기본  (2) 2025.08.26
웹 스크래핑-준비  (2) 2025.07.28
모듈로 자체 실행  (0) 2025.07.22