728x90
반응형

FastAPI의 특징

FastAPI는 아래와 같은 기능을 당신에게 제공합니다:

 

개방형 표준 기반

  • 경로 동작, 매개변수, 바디 요청, 보안 등의 선언이 포함된 API 제작을 위한 OpenAPI.
  • JSON 스키마를 활용한 자동 데이터 모델 문서화 (OpenAPI 자체가 JSON 스키마 기반으로 합니다).
  • 대충 덧씌운 대신 세심한 연구 끝에 이러한 표준들을 토대로 설계.
  • 다양한 언어로 클라이언트 코드 자동 생성.

 

자동 문서화

대화형 API 문서와 웹 사용자 인터페이스 탐색이 포함되어 있습니다. 프레임워크는 OpenAPI를 기반으로 하기 때문에, 기본적으로 해당 두 가지가 포함된 여러 옵션이 존재합니다.

 

  • 대화형 탐색을 활용한 Swagger UI를 통한 브라우저에서의 직접적인 API 조회 및 테스트.

 

 

  • ReDoc를 사용한 대체 API 문서

 

 

모던 파이썬

이것은 모두 (Pydantic 덕분에 가능한) 표준 파이썬 3.6 자료형 선언을 기반으로 합니다. 새로 배워야 하는 문법은 없습니다. 단지 표준 모던 파이썬을 사용할 뿐입니다.

 

만약 당신이 (FastAPI를 사용하지 않더라도) 파이썬 자료형을 어떻게 사용하는지 알아볼 2분 정도의 시간이 필요하다면, 다음의 간단한 튜토리얼을 확인하시기 바랍니다: 파이썬 자료형.

 

자료형과 함께 표준 파이썬을 사용합니다:

 

 

이것은 다음과 같이 작성될 수 있습니다:

 

 

정보
**second_user_data 의 의미는 다음과 같습니다:
second_user_data 딕셔너리의 키와 값을 키-값 인자로 바로 전달합니다. 이것은 User(id=4, name="mary", joined="2018-11-30") 와 동일합니다.

 

편집기의 지원

모든 프레임워크는 사용하기 쉽고 직관적이게 설계되고, 모든 작업은 최고의 개발 경험을 보장하기 위해 개발이 시작하기도 전에 여러 편집기에서 테스트되었습니다. 

 

지난 파이썬 개발자 설문 조사에서 가장 많이 사용하는 기능이 "자동 완성"인 것이 명백하게 확인되었습니다.

 

FastAPI 프레임워크의 모든 기능은 그것을 충족시키게 설계되었습니다. 자동 완성은 어디에서나 작동합니다.

 

당신이 문서로 돌아갈 일은 거의 없습니다.

 

여기 당신의 편집기가 어떻게 당신을 지원하는지 보여주겠습니다:

 

 

 

 

 

당신은 이전에는 불가능하다고 여겼던 코드를 완성시킬 수 있습니다. 예를 들어, 요청으로 부터 전달 받은 (중첩되어 있을 수 있는) JSON 바디 내부의 price 키입니다.

 

더 이상 잘못된 키 이름을 입력하거나, 문서를 왔다 갔다 하거나, 또는 위아래로 스크롤하여 마침내 username 을 사용했는지, user_name 을 사용했는지 확인하지 않아도 됩니다.

 

단순함

모든 곳에 선택 사항이 존재하는, 합리적인 기본값이 있습니다. 모든 매개변수는 당신의 필요에 따르거나 필요한 API를 정의하기 위해 미세 조정될 수 있습니다.

 

그러나 기본적으로, 모두 "작동"합니다.

 

유효성 검증

  • 다음을 포함한 대부분의 (또는 모든?) 파이썬 자료형에 대한 유효성 검사:
    • JSON 객체 ( dict ).
    • 항목 유형을 정의하는 JSON 배열 ( list ).
    • 최소 길이와 최대 길이를 정의하는 문자열 ( str ) 필드.
    • 최소값과 최대값, 그 밖의 것들을 포함하는 숫자형 ( int , float ).
  • 다음과 같은, 더 생소한 자료형에 대한 유효성 검사:
    • URL.
    • 이메일.
    • UUID.
    • 기타 등등.

 

모든 유효성 검사는 잘 확립되어 있고 강력한 Pydantic에 의해 처리됩니다.

 

보안과 인증

어떤 데이터베이스 또는 데이터 모델과도 절충하지 않고 보안과 인증으로 통합되어 있습니다.

 

모든 보안 체계는 다음을 포함하여 OpenAPI에 정의되어 있습니다:

 

  • 기본 HTTP.
  • (JWT Token을 포함한) OAuth2. JWT를 사용한 OAuth2 튜토리얼을 확인해보시기 바랍니다.
  • 다음에 포함되어 있는 API 키:
    • 헤더
    • 쿼리 매개변수
    • 쿠키, 기타 등등.

 

또한 (세션 쿠키를 포함한) Starlette의 모든 보안 기능을 사용할 수 있습니다.

 

모든 것은 당신의 시스템, 데이터 저장소, 관계형과 NoSQL 데이터베이스, 기타 등등에 쉽게 통합할 수 있게 재사용 가능한 도구와 구성 요소로 구축되어 있습니다.

 

의존성 주입

FastAPI는 엄청 쉽게 사용할 수 있지만, 동시에 엄청 강력한 의존성 주입 시스템을 포함합니다.

 

  • 의존성 조차도 의존성을 가질 수 있어 계층 또는 의존성의 "그래프"를 생성합니다.
  • 모든 의존성은 프레임워크에 의해 자동으로 처리됩니다.
  • 모든 의존성은 요청으로 부터 데이터를 요청할 수 있고 경로 동작의 제약 조건 강화하고 자동 문서화를 보완할 수 있습니다.
  • 심지어 의존성에 정의된 경로 동작 매개변수에 대해서도 자동으로 유효성 검사를 진행합니다.
  • 복잡한 사용자 인증, 데이터베이스 연결, 기타 등등을 지원합니다.
  • 데이터베이스, 프론트엔드와 절충하지 않지만 그것들 모두를 쉽게 통합할 수 있습니다.

 

제한 없는 "플러그 인"

다른 방법을 사용하지 않고 당신이 필요한 코드를 임포트하여 사용할 수 있습니다.

 

모든 통합은 경로 동작을 위한 구조 및 문법과 동일한 두 줄의 코드로 당신의 애플리케이션을 위한 "플러그 인"을 만들 수 있도록 (의존성과 함께) 쉽게 사용될 수 있게 설계 되었습니다.

 

테스트

  • 100% 테스트 커버리지.
  • 100% 코드 기반으로 어노테이트된 자료형.
  • 제품 애플리케이션에 사용.

 

Starlette의 기능들

FastAPIStarlette과 완벽하게 호환 (그리고 이를 기반으로) 합니다. 따라서, 당신이 가지고 있는 모든 추가적인 Starlette 코드 또한 작동합니다.

 

FastAPI 는 실제로 Starlette 의 서브-클래스입니다. 따라서, 만약 당신이 이미 Starlette을 알거나 사용하고 있다면, 대부분의 함수는 동일한 방법으로 동작합니다.

 

당신은 FastAPI을 통해 다음과 같은 Starlette의 기능들을 사용할 수 있습니다 (FastAPI는 단지 Starlette의 강화판입니다):

 

  • 매우 인상적인 성능. NodeJSGo와 견줄, 가장 빠른 파이썬 프레임워크 중 하나입니다.
  • WebSocket 지원.
  • GraphQL 지원.
  • In-process 백그라운드 작업.
  • 시작 및 종료 이벤트.
  • requests 에 따라 구축된 테스트 클라이언트.
  • CORS, GZip, 정적 파일, 스트리밍 응답.
  • 세션과 쿠키 지원.
  • 100% 테스트 커버리지.
  • 100% 코드 기반으로 어노테이트된 자료형.

 

Pydantic의 기능들

FastAPIPydantic과 완벽하게 호환 (그리고 이를 기반으로) 합니다. 따라서, 당신이 가지고 있는 모든 추가적인 Pydantic 코드 또한 작동합니다.

 

데이터베이스를 위한 ORM, ODM과 같은 Pydantic를 기반으로 한 외부 라이브러리로 포함합니다.

 

이것은 모든 것에 자동으로 유효성 검사가 진행되기 때문에 대부분의 경우 요청에서 얻은 동일한 객체를 데이터베이스로 바로 전달할 수 있음을 의미합니다.

 

반대의 경우도 마찬가지로, 대부분의 경우 데이터베이스에서 얻은 동일한 객체를 클라이언트로 바로 전달할 수 있습니다.

 

당신은 FastAPI를 통해 다음과 같은 Pydantic의 기능들을 사용할 수 있습니다 (FastAPI는 모든 데이터 처리를 위해 Pydantic을 기반으로 합니다):

 

  • 머리 아플 일이 없습니다:
    • 새롭게 학습해야 할 스키마 정의 마이크로-언어가 없습니다.
    • 만약 당신이 파이썬 자료형을 안다면 Pydantic 사용법을 알고 있는 것입니다.
  • 당신의 IDE/linter/brain과 잘 어울립니다:
    • Pydantic 자료 구조가 당신이 선언한 클래스들의 인스턴스일 뿐이기 때문에; 자동-완성, 린트검사, mypy 그리고 당신의 직관은 모두 유효성 검사를 마친 데이터를 통해 제대로 작동해야 합니다.
  • 빠릅니다:
    • 벤치마크를 통해 Pydantic이 테스트 된 다른 모든 라이브러리보다 빠르다는 걸 알 수 있습니다.
  • 복잡한 구조에 대한 유효성 검사가 가능합니다:
    • Pydantic의 계층적 모델, 파이썬 typingList , Dict 및 기타 등등을 사용할 수 있습니다.
    • 그리고 유효성 검사를 통해 복잡한 데이터 스키마를 JSON 스키마로 명확하고 쉽게 정의, 확인 그리고 문서화할 수 있습니다.
    • 당신은 깊게 중첩된 JSON 객체를 사용하거나 그것들 모두 유효성 검사를 진행하고 어노테이트 할 수 있습니다.
  • 확장 가능합니다:
    • Pydantic은 사용자 정의 자료형을 정의하거나 유효성 검사 데코레이터로 데코레이트 된 모델의 메서드를 사용하여 유효성 검사를 확장할 수 있습니다.
  • 100% 테스트 커버리지.

 


원문

https://fastapi.tiangolo.com/features/

 

Features - FastAPI

Features FastAPI features FastAPI gives you the following: Based on open standards OpenAPI for API creation, including declarations of path operations, parameters, body requests, security, etc. Automatic data model documentation with JSON Schema (as OpenAP

fastapi.tiangolo.com

 

728x90
반응형