[ FastAPI ] 바디 - 다중 매개변수
Path 와 Query 를 어떻게 사용하는지 살펴봤기 때문에, 이제 요청 바디 선언과 관련된 숙련된 사용법을 알아봅시다.
Path , Query 그리고 바디 매개변수 혼합
우선, 당연하게도, Path , Query 그리고 요청 바디 매개변수 선언을 자유롭게 섞어 혼합할 수 있고 FastAPI는 이를 통해 무엇을 해야할지 알 수 있습니다.
그리고 None 을 기본 값으로 설정하여, 바디 매개변수를 선택 사항으로 선언할 수도 있습니다:
참고
이 경우, 바디로 부터 받아지는 item 은 선택 사항이고, None 기본 값을 갖는 다는 것을 잊지 마시기 바랍니다.
다중 바디 매개변수
이전 예시에서, 경로 동작은 아래와 같이 Item 의 어트리뷰트를 가진 JSON 바디를 예상합니다:
그러나, item 그리고 user 와 같이 다중 바디 매개변수를 선언할 수도 있습니다:
이 경우, FastAPI는 함수에 한 개 이상의 바디 매개변수 (Pydantic 모델인 두 개의 매개변수) 가 있다는 걸 알게 됩니다.
따라서, 매개변수의 이름을 바디 내부 키 (필드 이름) 로 사용하고, 아래와 같은 바디를 예상합니다:
참고
이전과 같은 방식으로 item 이 선언 되었음에도 불구하고, 이것이 바디 내부에 item 키로 들어 있을 것이라 예상된다는 것을 잊지마시기 바랍니다.
FastAPI는 요청으로 부터 자동 변환하여, 매개변수 item 이 특정 내용을 수신하도록 하며 이것은 user 에서도 동일하게 작동합니다.
복합 데이터의 유효성 검사를 수행하고, OpenAPI 스키마와 자동 문서가 그러하듯 동일하게 문서화합니다.
바디 내부의 단일 값
쿼리와 경로 매개변수에 추가적인 데이터를 선언할 때 Query 와 Path 를 사용한 것처럼, FastAPI는 동등한 기능을 가진 Body 를 제공합니다.
예를 들어, 이전 모델을 확장할 경우, 동일한 바디 내의 item 과 user 옆에 importance 라는 다른 키를 선언하기로 결정할 수 있습니다.
만약 이것을 그대로 선언 한다면, 이것이 단일 값이기 때문에, FastAPI는 이것을 쿼리 매개변수로 추정합니다.
그러나 Body 를 사용하여 이것이 바디의 다른 키인 것을 FastAPI에게 지시할 수 있습니다:
이 경우, FastAPI는 다음과 같은 바디를 예상합니다:
다시 한번, 데이터 자료형을 변환하고, 유효성 검사를 하며, 문서화, 기타 등등의 작업을 수행합니다.
다중 바디 매개변수와 쿼리
물론, 필요할 때마다 추가적인 쿼리 매개변수를 추가적인 바디 매개변수에 선언할 수 있습니다.
기본적으로, 단일 값은 쿼리 매개변수로 해석되기 때문에, 명시적으로 Query 를 추가할 필요 없이, 아래와 같이 할 수 있습니다:
이는 곧 아래와 같습니다:
정보
Query , Path 그리고 차후 살펴 볼 다른 것들과 마찬가지로 Body 또한 매개변수로 추가적인 유효성 검사와 메타데이터 매개변수를 갖습니다.
단일 바디 매개변수 삽입
당신이 Pydantic 모델 Item 으로 부터 단일의 item 바디 매개변수만을 갖는다고 가정해봅시다.
기본적으로, FastAPI는 이것을 바디로 바로 예상합니다.
그러나 만약 item 이라는 키를 가진 JSON과 그 내부에, 추가적인 바디 매개변수를 선언했을 때처럼, 모델 내용이 포함된 것을 예상하길 원한다면, 특별한 Body 매개변수 embed 를 사용하여 이를 해결할 수 있습니다:
이는 곧 아래와 같습니다:
이 경우 FastAPI는 다음과 같은 바디를 예상합니다:
아래와 같은 것 대신입니다:
요약
요청이 단일 바디만을 갖더라도, 다중 바디 매개변수를 당신의 경로 동작 함수에 추가할 수 있습니다.
FastAPI는 이를 처리하고, 올바른 데이터를 당신의 함수에 넘겨주며, 유효성 검사를하고 경로 동작의 올바른 스키마를 문서화합니다.
또한 바디의 부분으로 단일 값을 받도록 선언할 수 있습니다.
그리고 단일 매개변수만 선언 되었더라도 키에 바디를 삽입하라고 FastAPI에게 지시할 수 있습니다.
원문
https://fastapi.tiangolo.com/tutorial/body-multiple-params/
Body - Multiple Parameters - FastAPI
Body - Multiple Parameters Now that we have seen how to use Path and Query, let's see more advanced uses of request body declarations. Mix Path, Query and body parameters First, of course, you can mix Path, Query and request body parameter declarations fre
fastapi.tiangolo.com
'FastAPI > Tutorial - User Guide' 카테고리의 다른 글
[ FastAPI ] 바디 - 중첩된 모델 (0) | 2021.09.17 |
---|---|
[ FastAPI ] 바디 - 필드 (0) | 2021.09.15 |
[ FastAPI ] 경로 매개변수와 숫자형 유효성 검사 (0) | 2021.09.03 |
[ FastAPI ] 쿼리 매개변수와 문자열 유효성 검사 (0) | 2021.09.02 |
[ FastAPI ] 요청 바디 (0) | 2021.08.29 |