728x90
반응형

Query 를 사용한 쿼리 매개변수로 더 많은 유효성 검사와 메타 데이터를 선언한 것과 똑같은 방법으로, Path 를 사용한 경로 매개변수로 동일한 자료형 유효성 검사와 메타 데이터를 선언할 수 있습니다.

 

경로 임포트

우선, fastapi 로 부터 Path 를 임포트 하시기 바랍니다:

 

 

메타 데이터 선언

Query 와 마찬가지로 동일한 모든 매개변수를 선언할 수 있습니다.

 

예를 들어,  title 이라는 메타 데이터 값을 경로 매개변수 item_id 로 선언할 수 있습니다:

 

 

참고
경로 매개변수는 항상 경로의 일부분으로 요구됩니다.

따라서, ... 를 사용하여 그것이 요구되는 것임을 표시해야 합니다.

그럼에도 불구하고, None 또는 기본 값을 설정하여 선언하면, 아무런 영향을 끼치지 못하고, 여전히 필수적으로 요구됩니다.

 

필요에 따른 매개변수 정렬

str 이 요구되는 쿼리 매개변수 q 를 선언하길 원한다고 가정해봅시다.

 

그리고 다른 어떤 매개변수도 선언할 필요가 없어, Query 를 사용할 필요가 없다고 해봅시다.

 

그러나 여전히 item_id 경로 매개변수를 선언하기 위해 Path 를 사용해야 합니다.

 

만약 당신이 "기본 값"을 가진 값을 "기본 값"이 없는 값 앞에 두면 파이썬은 이를 경고합니다.

 

그러나 이것들을 재정렬하여, 기본 값 (쿼리 매개변수 q ) 을 갖지 않은 값을 먼저 둘 수 있습니다.

 

FastAPI는 이를 별로 개의치 않습니다. 이름, 자료형 그리고 기본 선언( Query , Path , 기타 등등)을 통해 매개변수를 탐색하기 때문에 순서는 별로 중요치 않습니다.

 

따라서, 함수를 다음과 같이 선언할 수 있습니다:

 

 

필요에 따른 매개변수 정렬 트릭

만약 기본 값과 Query 없이 쿼리 매개변수 q 를, 그리고 Path 를 사용하여 경로 매개변수 item_id 를 순서 바꿔 선언하고 싶다면, 파이썬에는 이를 위한 특별한 문법이 있습니다.

 

* 를 함수의 첫 번째 매개변수로 전달하시기 바랍니다.

 

파이썬은 * 를 가지고 어떤 작업도 실행시키지 않지만, 뒤에 오는 매개변수들이 기본 값이 없더라도, kwargs 로 알려진, 키워드 인자 (키-값 쌍) 인 것을 알게 됩니다.

 

 

숫자형 검증: 크거나 같은 경우

QueryPath (그리고 나중에 보게 될 다른 것들) 를 사용하여 당신은 문자형 제약 조건은 물론, 숫자형 제약 조건을 선언할 수 있습니다.

 

여기, ge=1 를 통해, item_id1 보다 "크거나 같은 (greater than or equal)" 정수형 숫자가 되어야 한다는 걸 알 수 있습니다.

 

 

숫자형 검증: 더 큰 경우와 작거나 같은 경우

똑같은 방법이 다음에도 적용됩니다.

 

  • gt : 더 큰 경우 (greater than)
  • le : 작거나 같은 경우 (less than or equal)

 

 

숫자형 검증: 실수형, 더 큰 경우와 더 작은 경우

숫자형 검증은 float 값에서도 동작합니다.

 

여기서는 단순히 ge 뿐만 아니라 gt 를 선언하는 것이 중요해집니다. 예를 들어, 1 보다 작지만, 0 보다는 무조건 커야 하는 값이 필요한 경우가 있습니다.

 

따라서, 0.5 는 유효한 값입니다. 그러나 0.0 또는 0 은 유효하지 않습니다.

 

그리고 lt 에서도 동일합니다.

 

 

요약

QueryPath (그리고 아직 살펴보지 않은 다른 것들) 를 사용하여 쿼리 매개변수와 문자열 검증 때와 같은 방식으로 메타 데이터 선언과 문자열 유효성 검사를 할 수 있습니다.

 

그리고 또한 숫자형 검증도 아래와 같이 선언할 수 있습니다:

 

  • gt : 더 큰 경우 (greater than)
  • ge : 크거나 같은 경우 (greater than or equal)
  • lt : 더 작은 경우 (less than)
  • le : 작거나 같은 경우 (less than or equal)

 

정보
Query , Path , 그리고 차후 살펴볼 것들은 (사용하지 않아도 될) 공통 Param 클래스의 서브클래스입니다.

그리고 이 모든 것들은 당신이 봤던 추가적인 유효성 검사와 메타 데이터의 동일한 모든 매개변수를 똑같이 공유합니다.

 

기술적 세부사항
Query , Path , 그리고 다른 것들을 fastapi 로 부터 임포트 할 경우, 그것들은 사실 함수입니다.

이를 호출할 때, 동일한 이름의 클래스의 인스턴스를 반환합니다.

따라서, 함수인 Query 를 임포트하고, 이를 호출할 경우, 이것은 Query 라는 이름을 가진 클래스의 인스턴스를 반환합니다.

이 함수들은 (클래스를 직접 사용하는 대신) 편집기가 이것의 자료형에 대한 오류를 표시하지 않도록 하기 위한 것입니다.

이러한 방법 덕분에, 오류를 없애기 위해 사용자 지정 구성을 추가할 필요 없이 보통의 편집기와 코딩 도구를 사용할 수 있습니다.

 


원문

https://fastapi.tiangolo.com/tutorial/path-params-numeric-validations/

 

Path Parameters and Numeric Validations - FastAPI

Path Parameters and Numeric Validations The same way you can declare more validations and metadata for query parameters with Query, you can declare the same type of validations and metadata for path parameters with Path. Import Path First, import Path from

fastapi.tiangolo.com

 

728x90
반응형