FastAPI를 사용하여 웹 API-워크샵 처음부터 구축

10614 단어 fastapipythontutorial
이 문서는 다음과 같습니다.

  • Medium
  • GitHub
  • 백러시아 PyCon의 첫 FastAPI 워크숍


    지난 주말에 PyCon Belarus에 갈 기회가 있었어요. 즐겁게 놀았어요. 좋은 사람들을 많이 만났어요.
    나는 그곳에서 강연을 했다.


    카밀라 구철레스
    @ 마리아 카라GL30

    "FastAPI를 사용하여 ML 모델을 쉽게 제공합니다"라는 회의 토론이 시작됩니다!🎉🎉
    13:2020년 2월 22일 오후 1시
    사.
    48
    그리고 약 60명의 세미나가 있습니다.


    PyConBY 2020(2월 21~22일) 회의
    @ 피콘비

    작업장의 날이 시작되었다!FastAPI 및 Catalyst에 대한 자세한 내용은 및 를 참조하십시오.
    10:2020년 2월 21일 오전 12시
    삼.
    십팔

    워크숍 만들기


    세미나를 만들 때, 나는 약간 흥분했다. 내가 사용할 수 있는 시간 안에 너무 많은 내용을 만들었다.
    최종 응용 프로그램은 기본적인 OAuth2 인증, 의존성 권한 수여 처리, 전체 덮어쓰기 테스트 등을 가지고 있다.
    나는 전체 현장에 대해 테스트를 진행했는데, 총 시간은 약 9시간이며, 3시간 안에 완성할 수 없다.
    그러나 이것은 점차적으로 개발된 것이기 때문에 한 걸음 (또는 두 걸음) 마다 새로운 버전의 응용 프로그램을 완성해야 하기 때문에 우리는 그것을 시작하여 한 걸음 한 걸음 완성하고 가능한 한 앞으로 추진할 수 있다.우리가 최종적으로 어디로 가든지, 그것은 여전히 이 프로그램의 유효한 버전이다.

    워크샵의 첫 번째 버전


    이와 같은 작업장의 속도는 끊임없는 균형이 있다. 왜냐하면 항상 다른 사람보다 어떤 부분을 더 빨리 완성하는 사람이 있기 때문에 어떤 상황에서는 일부는'지루하다'고 느낄 수 있고, 다른 사람들은 다음 부분을 완성하기 전에 어떤 부분을 완성할 수 있기 때문이다.
    그러나 백러시아 PyCon의 세미나에서 개발자 속도가 상당히 빨라서 우리는 응용 프로그램의 8판으로 업그레이드할 수 있지만 나는 5판으로 업그레이드하기를 희망한다.
    하지만 15개 버전이 있다.그래서 최종 버전을 보고 싶은 사람들에게는 바로 여기에 있다.

    최종 버전의 소스 코드


    나는 한 걸음 한 걸음 이곳의 모든 설명을 제공하는 간단한 방법이 없지만, 만약 당신이 궁금하다면, 당신은 여전히 이곳에서 코드의 최신 버전을 검사할 수 있습니다.
    모두 동일한 FastAPI 문서를 기반으로 하므로 모든 내용을 알고 싶으면 전체 FastAPI Tutorial - User Guide을 따르십시오.
    다음은 초기 설정 설명이고 이전 버전의 전체 코드를 가리키는 링크입니다.

    프로젝트 디렉토리 만들기


    프로젝트에 대한 디렉토리를 만듭니다.
    예를 들어 ./apiapp/:
    $ mkdir apiapp
    $ cd ./apiapp/
    

    Python 환경 만들기

    ./apiapp/ 디렉토리에 새 Python 환경을 만듭니다.
    시가, Pipenv 또는 기타 도구를 사용할 수 있습니다.
    단순화를 위해 순수 Python 및 venv 모듈을 사용합니다.
    Python 버전 > 3.6 확인:
    $ python --version
    
    # OR
    
    $ python3.6 --version
    
    # OR
    
    $ python3.7 --version
    
    그런 다음 Python 3.6+를 사용하여 프로젝트에 새 환경을 만듭니다.
    python -m venv env
    
    이것은 디렉터리 ./env/을 만들 것입니다. 여기에는 완전한 Python 환경과 자신의 가방 등이 포함되어 있습니다.
    이러한 환경에서 우리는 소프트웨어 패키지와 모든 것을 설치할 것이다.

    초기화git


    $ git init
    

    git의 환경 무시

    ./env/ 디렉토리에 다음과 같은 내용의 .gitignore 파일을 생성합니다.
    *
    
    (이것은 파일의 *)입니다.
    이것은 git에게 이 디렉터리의 모든 내용을 무시하기를 원한다고 알려 줍니다.

    환경 활성화


    이제 "활성화"환경이 필요합니다.
    이것은 터미널에 python을 실행하려고 시도할 때, 전역 디렉터리가 아닌 ./env/ 디렉터리에 설치된 새 Python을 사용해야 한다는 것을 알려 줍니다.
    환경 활성화:
    $ source ./env/bin/activate
    
    정상적으로 작동하는지 확인하려면 터미널에서 사용하는 파이썬 바이너리 파일을 확인하십시오.
    $ which python
    
    새 Python 경로를 표시해야 합니다. 예를 들어 다음과 같습니다.
    /home/user/code/apiapp/env/bin/python
    

    Windows에서 활성화


    Windows의 경우 Git Bash에서 다음 명령을 사용하여 활성화합니다.
    $ source ./env/Scripts/activate
    
    PowerShell을 사용하는 경우 다음과 같이 활성화합니다.
    $ .\env\Scripts\Activate.ps1
    
    PowerShell에서 사용하는 Python을 확인하려면 다음과 같이 하십시오.
    $ Get-Command python
    

    비활성화 환경


    우리는 환경을 사용할 필요가 없다. 왜냐하면 우리는 그것을 사용할 것이다.그러나 나중에 비활성화할 필요가 있으면 다음을 실행하십시오.
    $ deactivate
    

    편집기 열기


    편집기를 열고 환경을 선택합니다.

    Visual Studio 코드


    Visual Studio 코드와 셸과 유사한 Bash가 있으면 다음을 실행할 수 있습니다.
    $ code ./
    
    어떤 경우에도 편집기를 위한 환경을 선택했는지 확인하십시오.
    Visual Studio 코드를 사용하는 경우 Python Extension이 있는지 확인합니다.
    그런 다음 가상 파일 dummy.py을 만들고 열 수 있습니다.이렇게 하면 VS 코드가 확장되고 사용된 Python 환경을 표시합니다.
    왼쪽 아래 모서리에서 사용하는 Python 버전을 볼 수 있습니다. 이 버전을 클릭하면 다른 버전을 선택할 수 있습니다.
    그런 다음 dummy.py 파일을 삭제할 수 있습니다.

    피찰


    PyCharm을 편집기로 사용하는 경우 엽니다.
    프로젝트 디렉토리 ./apiapp/을 작업공간으로 선택합니다.
    그리고 프로젝트를 위해 Configure a Python interpreter을 선택하고 방금 만든 환경에서 해석기를 선택하십시오.

    올바른 환경 사용


    위에서 설명한 바와 같이 편집기에서 정확한 환경을 사용하고 프로젝트 디렉터리에서 완전히 열면 편집기가 설치된 패키지를 이해하고 자동 완성, 유형 검사, 상대 가져오기 등의 기능을 제공할 수 있습니다.
    만약 환경을 정확하게 설정하지 않았거나 프로젝트 디렉터리에서 완전히 열지 않았다면, 편집기는 이 모든 기능을 제공할 수 없습니다.

    파일 만들기


    현재 편집기에서 디렉터리 app을 만듭니다.그것은 모든 실제 코드를 저장할 것이다.app 디렉터리에서 두 개의 빈 파일 main.py__init__.py을 만듭니다.
    프로젝트 디렉터리에서 app 디렉터리 옆에 빈 requirements.txt 파일을 만듭니다.
    파일 구조는 다음과 같습니다.
    apiapp
    ├── app
    │   ├── __init__.py
    │   └── main.py
    ├── requirements.txt
    └── env
        └── ...
    
    

    요구 사항

    requirements.txt을 편집하여 다음을 포함합니다.
    fastapi
    uvicorn
    sqlalchemy
    async-exit-stack
    async-generator
    passlib[bcrypt]
    python-jose[cryptography]
    python-multipart
    python-dotenv
    

    설치 요구 사항


    현재 터미널에 requirements.txt 파일을 설치하는 데 필요한 사항:
    $ pip install -r requirements.txt
    

    개발자 요구 사항


    현재 개발을 촉진하기 위해 우리는 추가 가방을 추가할 것이다. 이 가방들은 개발 과정에서 우리를 도울 것이다.
    다음 내용을 사용하여 dev-requirements.txt 파일을 만듭니다.
    black
    mypy
    flake8
    requests
    pytest
    pytest-cov
    isort
    autoflake
    

    설치 개발자 요구 사항


    현재 개발 요구 사항을 동일한 방식으로 설치합니다.
    $ pip install -r dev-requirements.txt
    

    VS 코드에서


    설정에서 Language Server, mypy, black을 사용합니다.

    편집기 다시 로드


    새로 설치된 패키지를 감지하려면 편집기를 다시 로드해야 할 수도 있습니다.

    환경 다시 로드


    환경에 새 Python 패키지를 설치한 후 즉시 환경을 다시 활성화해야 합니다.
    $ source ./env/bin/activate
    
    참고 Windows에 있는 경우 동일한 명령을 사용합니다.
    명령이 있는 패키지(예: uvicorn)를 터미널에서 사용할 수 있도록 합니다.uvicorn을 사용할 수 있는지 확인하고 환경을 설치하고 다시 활성화한 후 올바른 버전입니다.
    $ which uvicorn
    
    환경에 uvicorn을 표시해야 합니다.

    참고: 기타 패키지 관리자


    Poyment나 Pipenv와 같은 다른 환경과 패키지 관리자를 사용한다면 requirements.txt 파일은 다른 파일이고 다른 방식으로 관리될 것입니다. 그러나 여기에서 우리는 순수/표준 Python 패키지의 가장 간단한 버전(venv, pip 등)을 사용합니다.

    어플리케이션 - 버전 1


    이제 응용 프로그램의 첫 번째 버전을 만듭니다.

    편집 - v1


    파일 main.py 편집...

    실행 -v1


    실행:
    $ uvicorn app.main:app --reload
    
  • 에서 main.py을 다시 편집하면 Uvicorn이 자동으로 다시 로드됩니다.
  • 최종 버전


    소스 코드의 최종 버전은 다음과 같습니다. https://github.com/tiangolo/blog-posts/tree/master/pyconby-web-api-from-scratch-with-fastapi/apiapp

    기타 스크립트


    브라우저에서 탐색할 수 있도록 HTML에서 테스트 및 보고 덮어쓰기를 실행할 수 있는 스크립트가 있습니다.
    $ bash test.sh
    
    모든 코드를 자동으로 포맷하는 스크립트가 있습니다.
    $ bash format.sh
    

    나에 관하여


    너는 나를 따라와서 나에게 연락하고, 질문하고, 내가 무엇을 하는지 보거나, 나의 소스 코드를 사용할 수 있다.
  • GitHub



  • Medium
  • 좋은 웹페이지 즐겨찾기