FastAPI - 경로 매개변수의 검증

2025. 8. 27. 16:11Programming Language/Python

반응형

이전에는 쿼리 스트링으로 들어오는 매개변수에 대해서 검증하고 설정하는 방법으로 Query를 사용한다고 했었다.

이번에는 경로 매개변수로 들어오는 값에 대해서 검증하고 설정하는 방법에 대해서 알아보자.

 

1. Path

fastapi에 있는 Path모듈은 경로 매개변수에 대해서 다양한 옵션들을 통해서 검증을 할 수 있는 방법을 제공한다.

먼저 확인해보기 위해서 Path를 import 해주고 

기본 서버를 구성해주자.

그리고 경로 파라미터를 받는 형태로 메서드를 하나 구성해주자.

 

더보기

여기서 하나 내용이 있는데 사실 FastAPI에서는 사용해봐야 의미 없는 내용이기에 전체 설명에 추가하진 않았는데 함수의 파라미터는 원래 단순하게 순서에 맞게 보내면 자동으로 할당이 되어 진다.

간단하게 보여주면

이런 함수가 존재할때 

이렇게 호출하면 자동으로 값이 할당된다.

 

근데 여기서 맨 앞의 인자에 *를 추가하면 

기존과 같이 호출하면

에러가 출력된다.

 

파이썬 함수 정의 문벙에서 *는 키워드 전용 인자로 *를 인자를 붙이는건 해당 함수는 앞으로 매개변수를 키워드를 항상 붙여서 출력하겠다는 의미이다.

그래서 위와 같이 어떤 인자에 어떤 값을 전달할거다 라고 지정해줘야만 

이렇게 정상적으로 출력을 해준다.

 

이는 파이썬 문법에서 실수로 인자를 잘못쓰는 실수를 막고 가독성과 명확성을 높여주는 역할을 한다.

 

다만 FastAPI는 Uvicorn에서 이걸 알아서 키워드를 호출해서 부르기 때문에 크게 신경쓸 필요 없이 만들어도 되기에 따로 FastAPI에 맞는 설명을 추가하진 않겠다

방법은 사실 크게 다르지 않다...정도..?

이 상태에서 경로 파라미터로 받는 메서드를 추가해주고 

기본 값을 Path를 추가해서 넣어주면 시작이다.

우선 해당 값을 return으로 넣어주고

이제 인자들에 대해서 살펴보자.

 

1. title

해당 인자는 이전에 Query를 했을때와 동일하게 메타 데이터를 넣어주는 용도로 나중에 Swagger UI나 Opena API에서 확인이 가능하다.

한번 설정을 해보면

 

docs에 해당하는 곳에서는 안나오는데 

redoc에서는 

이렇게 표출이 된다.

 

2. 숫자 검증( ge / gt / le / lt )

전달하는 파라미터가 숫자일 경우 해당 숫자에 대한 검증을 위한 인자들이 존재한다.

  • ge (Greater then or Equal): 크거나 같은 경우
  • gt (Greater Then): 큰 경우
  • le (Lesser then or Equal): 작거나 같은 경우
  • lt (Lesser Then): 작은 경우

각각 확인해보자면

ge의 경우 

해당 값보다 작은 값이 온다면

이렇게 에러를 출력한다

 

다른 것들도 사실 방식은 동일하다

gt까지만 보자면

10에서도 에러를 벹는것을 확인할 수 있다.

 

실수 또한 이 숫자 검증 인자로 검증이 가능하다.

이렇게 float 형일때 10.5라는 값을 넣는다면 

이렇게 소수점도 검증할 수 있다.

2. 쿼리 스트링과 같이 받는 경로 파라미터

경로 파라미터를 받으면서 쿼리 스트링으로도 파라미터를 같이 받을 수도 있다.

방식은 그냥 두 개의 설정을 같이해주기만 하면 된다.

매개변수 간의 순서가 바뀌더라도 

문제없다

 

 

 

 

 

반응형