FastAPI/Tutorial - User Guide
[ FastAPI ] 하위-의존성
[ FastAPI ] 하위-의존성
2021.10.20하위-의존성 하위-의존성을 가진 의존성을 생성할 수 있습니다. 그것들은 필요한 만큼 깊을 수 있습니다. FastAPI는 그것들을 해결합니다. 첫 번째 의존성 "의존 가능한 것" 다음과 같이 첫 번째 의존성 ("의존 가능한 것") 을 생성할 수 있습니다: 이것은 선택적 쿼리 매개변수 q 를 str 로 선언하고, 반환합니다. 이것은 꽤 단순 하지만 (매우 유용하지는 않고), 하위-의존성의 작동 방식에 집중하는 데 도움 됩니다. 두 번째 의존성, "의존 가능한 것"과 "디펜던트" 그러면 동시에 스스로 (이것 또한 "디펜던트"인) 의존성을 선언하는 ("의존 가능한") 또 다른 의존성 함수를 생성할 수 있습니다: 선언된 매개변수에 집중해봅시다: 이 함수가 스스로 ("의존 가능한") 의존성임에도 불구하고, (다른 ..
[ FastAPI ] 의존성으로서의 클래스
[ FastAPI ] 의존성으로서의 클래스
2021.10.19의존성 주입 시스템을 더 깊이 알아보기 전에, 이전 예시를 개선해봅시다. 이전 예시에서의 dict 이전 예시에서, ("의존가능한") 의존성으로부터 dict 을 반환했습니다: 그러나 경로 동작 함수의 매개변수 commons 내부에 dict 을 받게 됩니다. 그리고 키와 값의 자료형을 모르기 때문에, 편집기가 dict 에 대한 (완성 기능과 같은) 많은 지원을 제공할 수 없다는 걸 압니다. 더 좋게 할 수 있습니다... 의존성으로 만들어주는 것 지금까지 함수로 선언된 의존성을 보았습니다. 그러나 그것이 (더 일반적인 상황임에도 불구하고) 의존성을 선언하는 유일한 방법이 아닙니다. 주요한 사실은 의존성이 "호출 가능"해야 한다는 것입니다. 파이썬에서는 함수와 같이 파이썬이 "호출"할 수 있는 모든 것이 "호출..
[ FastAPI ] 의존성 - 첫 단계
[ FastAPI ] 의존성 - 첫 단계
2021.10.06FastAPI는 매우 강력하지만 직관적인 의존성 주입 시스템을 갖고 있습니다. 이것은 사용하기 매우 단순하게, 그리고 어떤 개발자라도 FastAPI를 사용하는 다른 컴포넌트와 이것을 쉽게 통합할 수 있게 설계되어 있습니다. "의존성 주입"이란 무엇인가 "의존성 주입"은, 프로그래밍에서, 작동을 위해 필요로 하는 걸 코드 (이 경우, 경로 동작 함수) 에 선언하거나 "의존성"을 사용하는 방법을 의미합니다. 그리고, 그 시스템 (이 경우 FastAPI) 은 (의존성을 "주입"하여) 코드에 필요한 의존성을 제공하는 데 필요한 모든 일을 처리합니다. 이것은 다음과 같은 상황에 유용합니다: 로직 공유 (동일한 코드 로직의 반복). 데이터베이스 연결 공유. 보안, 인증, 역할 요구 사항, 기타 등등 강요. 그리고 ..
[ FastAPI ] 바디 - 수정
[ FastAPI ] 바디 - 수정
2021.10.03PUT 을 사용한 대체를 위한 수정 아이템을 수정하기 위해 HTTP PUT 동작을 사용할 수 있습니다. 입력 데이터를 (예를 들어 NoSQL 데이터베이스와 사용하기 위해) JSON으로 저장될 수 있게 변환되도록 jsonable_encoder 를 사용할 수 있습니다. 예를 들어, datetime 을 str 로 변환하는 것입니다. PUT 는 존재하는 데이터를 대체하는 데이터를 전달 받을 때 사용됩니다. 대체 관련 주의사항 이것은 만약 PUT 을 사용하여 아이템 bar 를 수정하고 싶을 때 바디에 포함되어야 할 것은 아래와 같습니다: 왜냐하면 이미 저장되어 있는 어트리뷰트 "tax": 20.2 는 포함하지 않고, 입력 모델은 기본 값 "tax": 10.5 을 취하기 때문입니다. 그리고 데이터에 "새로운" ta..
[ FastAPI ] JSON 호환 부호화
[ FastAPI ] JSON 호환 부호화
2021.10.03(Pydantic 모델 처럼) 데이터 자료형을 ( dict , list , 기타 등등과 같은) JSON과 호환 가능한 것으로 전환해야 할 때가 있습니다. 예를 들어, 데이터베이스에 이것을 저장해야 할 때입니다. 이를 위해, FastAPI는 jsonable_encoder() 함수를 제공합니다. jsonable_encoder 함수 오로지 JSON과 호환 가능한 데이터만 전달 받은 데이터베이스 fake_db 가 있다고 상상해봅시다. 예를 들어, JSON과 호환되지 않기 때문에, datetime 객체를 전달 받지 않습니다. 따라서, datetime 객체는 ISO 구성 방식에 해당하는 데이터를 포함한 str 로 변환되어야만 합니다. 동일한 방법으로, 데이터베이스는 (어트리뷰트를 사용하는 객체인) Pydantic ..
[ FastAPI ] 경로 동작 구성
[ FastAPI ] 경로 동작 구성
2021.10.01아래는 경로 동작 데코레이터를 구성할 때 전달할 수 있는 매개변수들입니다. 주의 이 매개변수들은 경로 동작 함수가 아닌, 경로 동작 데코레이터로 바로 전달된다는 것을 명심하기 바랍니다. 응답 상태 코드 경로 동작의 응답 내부에 사용하기 위한 (HTTP) status_code 를 정의할 수 있습니다. 404 처럼, int 를 바로 전달할 수 있습니다. 그러나 각각의 숫자 코드가 무엇에 관한 것인지 기억나지 않는다면, status 에 있는 손쉬운 상수를 사용할 수 있습니다: 이 상태 코드는 응답 내부에서 사용되며 OpenAPI 스키마에 추가됩니다. 기술적 세부사항 from starlette import status 를 사용할 수 있습니다. FastAPI는 개발자의 편의성을 위해 starlette.status..
[ FastAPI ] 오류 처리
[ FastAPI ] 오류 처리
2021.09.30API을 사용하는 클라이언트에 오류를 알려야 하는 상황이 많이 있습니다. 이 클라이언트는 프론트엔드인 브라우저는 물론 IoT 기기, 기타 등등 다른 곳의 코드가 될 수도 있습니다. 클라이언트에 아래와 같은 내용을 알려줘야 합니다: 클라이언트는 해당 작업에 대한 충분한 권한이 없습니다. 클라이언트는 자원에 접근할 수 없습니다. 클라이언트가 접근하고자 시도하는 아이템이 존재하지 않습니다. 기타 등등. 이러한 경우, 보통 400 범위 내 (400부터 499까지) HTTP 상태 코드를 반환합니다. 이것은 (200부터 299까지의) 200 HTTP 상태 코드에도 유사합니다. "200" 상태 코드는 요청이 어떻게든 "성공"했다는 걸 의미합니다. 400 범위 내의 상태 코드는 클라이언트에 오류가 있다는 걸 의미합니다..
[ FastAPI ] 요청 폼과 파일
[ FastAPI ] 요청 폼과 파일
2021.09.27File 과 Form 을 사용하여 파일 및 폼 필드를 동시에 정의할 수 있습니다. 정보 업로드된 파일 그리고/또는 폼 데이터를 전달 받기 위해서는, 우선 python-multipart 를 설치하기 바랍니다. 예를 들어 pip install python-multipart 와 같은 방식으로 가능합니다. File 및 Form 임포트 File 및 Form 매개변수 정의 Body 또는 Query 와 동일한 방법으로 파일 및 폼 매개변수를 생성합니다. 파일과 폼 필드는 폼 데이터로 업로드되고 파일 및 폼 필드를 전달 받을 수 있습니다. 그리고 몇몇의 파일은 bytes 로 선언하고 다른 몇몇은 UploadFile 로 선언할 수 있습니다. 주의 경로 동작 내부에 다중 File 및 Form 매개변수를 선언할 수 있지만,..
[ FastAPI ] 요청 파일
[ FastAPI ] 요청 파일
2021.09.27https://github.com/swagger-api/swagger-ui/issues/4276 File 을 사용하여 클라이언트에 의해 업로드될 파일을 정의할 수 있습니다. 정보 업로드된 파일을 전달 받을 때, 우선 python-multipart 를 설치해야 합니다. 예를 들어 pip install python-mutipart 와 같은 방식으로 가능합니다. 왜냐하면 "폼 데이터"로 업로드된 파일이 전송되어지기 때문입니다. 임포트 File fastapi 로부터 File 및 UploadFile 을 임포트합니다: File 매개변수 정의 Body 또는 Form 과 동일한 방법으로 파일 매개변수를 만듭니다: 정보 File 은 Form 을 직접 상속 받는 클래스입니다. 그러나 Query , Path , File 그..
[ FastAPI ] 폼 데이터
[ FastAPI ] 폼 데이터
2021.09.25JSON 대신 폼 필드를 전달 받아야 한다면, Form 을 사용할 수 있습니다. 정보 폼을 사용하기 위해서는, 우선 python-multipart 를 설치해야 합니다. 예를 들어 pip install python-mutipart 와 같은 방식으로 가능합니다. Form 임포트 fastapi 로부터 Form 을 임포트합니다: Form 매개변수 정의 Body 또는 Query 와 같은 방식으로 폼 매개변수를 생성합니다: 예를 들어, OAuth2 명세를 사용할 수 있는 방법 중 하나로 ("비밀번호 흐름"이라 불리는) 폼 필드에 username 및 password 을 전송하는 게 필수로 요구되는 방법이 있습니다. 해당 명세는 정확히 명명된 username 및 password 를 요구하고, JSON이 아닌, 폼 필드..