FastAPI學習記錄
fastapi已經學習有一段時間,今天抽時間簡單整理下。
官網介紹:
FastAPI 是一個用于構建 API 的現代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于標準的 Python 類型提示。
-
快速:可與 NodeJS 和 Go 并肩的極高性能(歸功于 Starlette 和 Pydantic)最快的 Python web 框架之一。
-
高效編碼:提高功能開發(fā)速度約 200% 至 300%。*
-
更少 bug:減少約 40% 的人為(開發(fā)者)導致錯誤。* 智能:極佳的編輯器支持。處處皆可自動補全,減少調試時間。
-
簡單:設計的易于使用和學習,閱讀文檔的時間更短。 簡短:使代碼重復最小化。通過不同的參數聲明實現豐富功能。bug 更少。
-
健壯:生產可用級別的代碼。還有自動生成的交互式文檔。 標準化:基于(并完全兼容)API 的相關開放標準:OpenAPI
(以前被稱為Swagger) 和 JSON Schema。
如果還沒學過的同學可先了解,如 pydantic、fastapi、sqlalchemy、請求/響應模型等有一定認識。
以下分享本次所學習的資料:
本次學習視頻(推薦):https://www.imooc.com/video/22971
fastapi:https://fastapi.tiangolo.com/zh
pydantic 官方文檔:https://docs.pydantic.dev
pydantic 支持所有的類型:https://docs.pydantic.dev/usage/types
項目結構
fastapi基本大同小異
如果是多個應用則可以再往上提一層,如 admin 下的,app下的等等
部分接口/代碼展示
僅僅剛開始學習,增刪查改目前只涉及,增、查,未有刪改相信也是會很快上手的。
個人感覺主要是 pydantic schemas 這塊要梳理清楚,增刪查改該怎樣編排,使得在編碼時更方便。
全部代碼將放在最后!
接口文檔打開鏈接:http://127.0.0.1:8000/docs/ppl/index
from fastapi import APIRouter, Depends, status
from sqlalchemy.orm import Session
from fastapi.responses import JSONResponse
from models.database import Base, engine, get_db
from schemas import schema_user
from cruds import crud_user
api_user = APIRouter()
Base.metadata.create_all(bind=engine)
@api_user.post('/add', response_model=schema_user.GetUser)
def add_user(user: schema_user.CreateUser, work: schema_user.CreateWork, db: Session = Depends(get_db)):
if crud_user.get_user(db, phone=user.phone):
return JSONResponse(status_code=status.HTTP_400_BAD_REQUEST, content={
'code': 0,
'message': '該手機號已被注冊'
})
return crud_user.add_user(db, user, work)
@api_user.get('/get', response_model=schema_user.GetUser)
def get_user(id: int = None, phone: int = None, db: Session = Depends(get_db)):
user = crud_user.get_user(db, id, phone)
if not user: return JSONResponse(status_code=status.HTTP_200_OK, content={})
return user
@api_user.get('/list', response_model=list[schema_user.GetUser])
def list_user(skip: int = 1, limit: int = 10, db: Session = Depends(get_db)):
user_list = crud_user.get_user(db, skip=skip, limit=limit)
if not user_list: return JSONResponse(status_code=status.HTTP_200_OK, content=[])
return user_list
感受
值得學習,pydantic 真不錯,但是類似編排是比較麻煩了點,可能是本人代碼量還不夠、不熟練等因素,不過也準備能開始無腦增刪查改!??!還需要學習jwt鑒權、中間件、redis,異步后臺任務、日志記錄等等。
docs接口文檔真不賴,生成可視化文檔、標注等,直接能調試…方便!文章來源:http://www.zghlxwxcb.cn/news/detail-653554.html
全部代碼
右鍵點我(gitee)文章來源地址http://www.zghlxwxcb.cn/news/detail-653554.html
到了這里,關于FastApi-1-結合sql 增/查demo的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!