FastAPI 및 Github 작업으로 클라이언트 자동 생성
8615 단어 beginnersprogrammingpythonwebdev
OpenAPI + FastAPI를 통한 조정
이 문제에 대한 한 가지 솔루션은 API를 설명하는 JSON 또는 YML을 작성할 수 있는 사양인 OpenAPI입니다. 그러면 클라이언트와 서버가 다른 언어로 되어 있고autogenerate 클라이언트와 서버가 동기화되도록 보장할 수 있습니다.
그러나 이 접근 방식에서 항상 가지고 있던 문제는 내가 만들고 싶은 모든 변경 사항에 대해 OpenAPI 사양을 편집하는 것을 개인적으로 좋아하지 않는다는 것입니다. 프로세스를 더 쉽게 만드는 도구가 있지만 백엔드 개발자로서 저는 백엔드에서 직접 경로를 업데이트하는 것을 선호합니다.
이것이 FastAPI이 들어오는 곳입니다. FastAPI는 많은 사려 깊은 기능을 갖춘 Python 웹 프레임워크입니다. 내가 가장 좋아하는 기능 중 하나는 작성한 코드에서 OpenAPI 사양을 생성한다는 것입니다. 예를 들어 다음 앱을 사용해 보겠습니다.
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
async def hello(name: Union[str, None] = None):
if name is None:
return {"message": "Hello World"}
else:
return {"message": f"Hello {name}"}
이것은 하나의 경로, 선택적 쿼리 매개변수 및 JSON 응답이 있는 간단한 앱입니다.
다음으로 서버를 실행합니다.
$ uvicorn main:app
그런 다음 http://localhost:8000/openapi.json 으로 이동하면 API와 일치하는 OpenAPI 사양이 표시됩니다.
API 우선 설계
이렇게 하면 워크플로가 다음에서 변경됩니다.
OpenAPI 스키마 업데이트 ⇒ 서버 경로 생성 ⇒ 클라이언트 생성
에게:
서버 업데이트 ⇒ OpenAPI 스키마 생성 ⇒ 클라이언트 생성
둘 다 장점이 있지만, FastAPI 버전은 내 백엔드를 양호한 상태로 만들고 다른 모든 것이 여기에서 파생되기 때문에 훨씬 더 자연스럽게 느껴집니다.
Github 작업으로 클라이언트 자동 업데이트
API의 클라이언트가 하나만 있는 경우 변경이 필요할 때마다 다시 생성하는 것이 나쁘지 않습니다. 그러나 클라이언트 수가 증가하거나 팀 규모가 증가함에 따라 수동 업데이트에 빠져드는 것을 방지하기 위해 이 프로세스를 자동화하고 싶을 것입니다.
Github Actions을 추가하면 커밋할 때마다 새 클라이언트를 생성할 수 있습니다. 먼저 동작을 살펴본 다음 분석해 보겠습니다.
name: Generate clients
on: push
jobs:
generate-clients:
runs-on: ubuntu-latest
name: Example
steps:
- uses: actions/checkout@master
- name: Set up Python 3.9
uses: actions/setup-python@v1
with:
python-version: 3.9
- name: Install
run: >-
python -m
pip install -r requirements.txt
--user
- name: Run server in background
run: uvicorn main:app &
- name: Generate OpenAPI document
run: curl localhost:8000/openapi.json > openapi.json
- name: Cleanup old client
run: rm -rf typescript-fetch-client/
- name: Generate new client
uses: openapi-generators/openapitools-generator-action@v1
with:
generator: typescript-fetch
- name: Commit new client
run: |
git config --global user.name 'Your Name'
git config --global user.email '[email protected]'
git add typescript-fetch-client/
git commit -am "Update typescript client"
git push
이 작업은 푸시할 때마다 실행되며 다음을 수행합니다.
그리고 그게 다야! 이제 누구나 API를 변경할 때마다 FastAPI의 OpenAPI 지원 덕분에 API와 일치하는 새 클라이언트가 자동으로 생성됩니다. FastAPI에 대해 자세히 알아보려면 fetch , React + FastAPI Authentication 및 Dependency Injection with FastAPI's Depends 관련 블로그를 확인하십시오.
Reference
이 문제에 관하여(FastAPI 및 Github 작업으로 클라이언트 자동 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/propelauth/autogenerating-clients-with-fastapi-and-github-actions-2lm9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)