FastAPI가 포함된 Python REST API, CRUD 애플리케이션
소개
FastAPI는 표준 Python 유형 힌트를 기반으로 Python 3.6 이상으로 API를 구축하기 위한 최신의 빠른(고성능) 웹 프레임워크입니다.
다음 프로젝트에 FastApi를 사용해야 하는 이유는 무엇입니까?
프로젝트 설정
"fastapi-blog"라는 프로젝트를 보관할 새 폴더를 만드는 것으로 시작하십시오.
mkdir fastapi-blog && cd fastapi-blog
다음으로 가상 환경을 생성하고 활성화합니다(우리는 pipenv를 사용할 것입니다):
pipenv 사용 방법 알아보기here
종속성 설치
pipenv install fastapi uvicorn
✔ Successfully created virtual environment!
Virtualenv location: /Users/rosie/.local/share/virtualenvs/fastapi-blog-FXGAPIoM
Creating a Pipfile for this project...
Installing fastapi...
Adding fastapi to Pipfile's [packages]...
✔ Installation Succeeded
Installing uvicorn...
Adding uvicorn to Pipfile's [packages]...
✔ Installation Succeeded
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success!
Updated Pipfile.lock (d74721)!
Installing dependencies from Pipfile.lock (d74721)...
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run
pipenv shell
를 실행하여 환경을 활성화하십시오.새 파일을 만들고
app.py
라고 부르면 이 파일에 모든 코드를 넣을 것입니다.touch app.py
이 기사에서는 Python 목록을 데이터베이스로 사용할 것이며 실제 데이터베이스는 사용하지 않을 것입니다.
app.py 파일 안에 다음을 넣으십시오.
# app.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"home": "Home page"}
터미널을 연 다음 서버를 실행하십시오.
$ uvicorn app:app
INFO: Started server process [19004]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
첫 번째 앱은 파일 이름이고 두 번째 앱은 애플리케이션 이름
app = FirstAPI
입니다.http://127.0.0.1:8000
유비콘에 대해 자세히 알아보기here
게시물을 저장할 가짜 데이터베이스를 만들어 보겠습니다.
# app.py
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional, Text
from datetime import datetime
app = FastAPI()
postdb = []
# post model
class Post(BaseModel):
id: int
title: str
author: str
content: Text
created_at: datetime = datetime.now()
published_at: datetime
published: Optional[bool] = False
@app.get("/")
def read_root():
return {"home": "Home page"}
여기에서 Pydantic 및 Python types module 을 사용하여 유형 주석이 있는 간단한 Python 클래스를 만듭니다.
우리가 저장하는 모든 블로그 게시물에 대해:
- the title
- the author
- the content
- the date we created it
- the date we published it
- and the status of the post
equal symbol(=)
를 사용하여 기본값을 추가합니다.이제 모든 게시물을 볼 수 있는 새 경로를 만듭니다.
# app.py
...
@app.get("/blog")
def get_posts():
return postdb
서버를 다시 시작한 다음http://127.0.0.1:8000 열면 비어 있음
list []
이 표시됩니다.첫 번째 게시물을 추가해 보겠습니다.
...
@app.post("/blog")
def add_post(post: Post):
postdb.append(post.dict())
return postdb[-1]
내가 FastAPI에 대해 정말 좋아하는 것 중 하나는 자동 생성된 문서입니다.
http://localhost:8000/docs .
첫 번째 게시물을 작성해 보겠습니다.
Try it out
를 클릭한 다음 다음을 입력합니다.{
"id": 1,
"title": "Getting started with Django",
"author": "Ousseynou DIOP",
"content": "Hello Django",
"created_at": "2021-03-01T18:17:45.194020",
"published_at": "2021-03-01T18:17:58.887Z",
"published": true
}
더 많은 게시물을 작성한 다음 http://localhost:8000/blog으로 이동하십시오.
ID로 하나의 게시물을 가져오자.
# app.py
...
@app.get("/blog/{post_id}")
def get_post(post_id: int):
post = post_id - 1
return postdb[post]
CRUD의 마지막 두 부분은 업데이트와 삭제입니다.
게시물 업데이트부터 시작하겠습니다.
# app.py
...
@app.post("/blog/{post_id}")
def update_post(post_id: int, post: Post):
postdb[post_id] = post
return {"message": "Post has been updated succesfully"}
지금 추가하면 게시물을 쉽게 업데이트할 수 있습니다.
게시물을 삭제하려면 이것을 추가해야 합니다.
# app.py
...
@app.delete("/blog/{post_id}")
def delete_post(post_id: int):
postdb.pop(post_id-1)
return {"message": "Post has been deleted succesfully"}
마무리
이 기사에서는 간단한 CRUD 애플리케이션을 만들어 FastAPI의 기본 빌딩 블록을 배웠습니다.
데이터베이스를 FastAPI와 통합하는 방법을 배우고 싶다면 알려주십시오.
다음 튜토리얼에서 뵙겠습니다.
Reference
이 문제에 관하여(FastAPI가 포함된 Python REST API, CRUD 애플리케이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/xarala221/python-rest-apis-with-fastapi-crud-application-9kc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)