91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python使用Fastapi開發的步驟

發布時間:2020-06-16 10:25:21 來源:億速云 閱讀:1096 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Python使用Fastapi開發的步驟,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Fastapi是一個基于python的框架,該框架鼓勵使用Pydantic和OpenAPI(以前稱為Swagger)進行文檔編制,使用Docker進行快速開發和部署以及基于Starlette框架進行的簡單測試。

它提供了許多好處,例如自動OpenAPI驗證和文檔編制,而無需添加不必要的膨脹。我認為,在不提供任何內置功能與提供太多內置功能之間取得很好的平衡。

安裝

安裝 fastapi 和 ASGI 服務器(例如uvicorn):

確保您使用的是Python 3.6.7+ 如果 pippython 給您python 2版本,則可能必須使用 pip3python3 。另外,請查看我關于python入門的文章。

pip install fastapi uvicorn

并在main.py文件中添加舊的“ hello world”:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"Hello": "World"}

運行開發

然后運行以進行開發,可以運行uvicorn main:app --reload

這就是簡單服務器要做的全部!現在您可以檢查  //localhost:8000/  以查看“主頁”。而且,如您所見,JSON響應“正常工作”!您還可以通過 //localhost:8000/docs 免費獲得Swagger UI。

驗證

如前所述,很容易驗證數據(并為接受的數據格式生成Swagger文檔)。只需從fastapi添加Query導入,然后使用它來強制驗證:

from fastapi import FastAPI, Query

@app.get('/user')
async def user(
    *,
    user_id: int = Query(..., title="The ID of the user to get", gt=0)
):
  return { 'user_id': user_id }

第一個參數...是默認值,如果用戶不提供值則提供該默認值。如果設置為None,則沒有默認值,并且該參數是可選的。為了沒有默認值并且該參數是強制性的,請使用Ellipsis ,或...代替。

如果運行此代碼,則會在swagger UI上自動看到更新:

Python使用Fastapi開發的步驟

Swagger UI允許您查看新的/ user路由并使用特定的用戶ID進行請求

如果您輸入任何用戶ID,您會看到它會自動為您執行請求,例如  //localhost:8000/user?user_id=1。在頁面中,您只能看到回顯了用戶ID!

如果要改為使用路徑參數(以使其為 /user/1,則只需輸入并使用Path而不是Query。也可以結合兩者

Post 路線

如果您有POST路由,則只需定義輸入即可

@app.post('/user/update')
async def update_user(
    *,
    user_id: int,
    really_update: int = Query(...)
):
    pass

在這種情況下,您可以看到user_id僅被定義為一個沒有QueryPath的整數;這意味著它將在POST請求正文中。如果您接受更復雜的數據結構,例如JSON數據,則應研究請求模型。

請求和響應模型

您可以使用Pydantic模型記錄并聲明詳細的請求和響應模型。這不僅可以讓您擁有所有模型的自動OpenAPI文檔,而且還可以驗證請求模型和響應模型,以確保輸入的任何POST數據都是正確的,并且返回的數據也符合該模型。

只需像這樣聲明模型:

from pydantic import BaseModel

class User(BaseModel):
    id:: int
    name: str
    email: str

然后,如果您希望將用戶模型作為輸入,則可以執行以下操作:

async def update_user(*, user: User):
    pass

或者,如果您要將其用作輸出:

@app.get('/user')
async def user(
    *,
    user_id: int = Query(..., title="The ID of the user to get", gt=0),
    response_model=User
):
  my_user = get_user(user_id)
  return my_user

路由和分解更大的API

您可以使用APIRouter將api分解為路由。例如,我已經在我的 API 中找到了這個app / routers / v1 / __ init __。py

from fastapi import APIRouter
from .user import router as user_router

router = APIRouter()

router.include_router(
    user_router,
    prefix='/user',
    tags=['users'],
)

然后您可以在app / routers / v1 / user.py中使用上面的用戶代碼-只需導入APIRouter并使用@ router.get('/')< aaaa>而不是 @ app.get('/ user')。它會自動路由到 / user / ,因為該路由是相對于前綴的。

from fastapi import APIRouter

router = APIRouter()

@router.get('/')
async def user(
    *,
    user_id: int = Query(..., title="The ID of the user to get", gt=0),
    response_model=User
):
  my_user = get_user(user_id)
  return my_user

最后,要在應用程序中使用所有v1路由器,只需將main.py編輯為:

from fastapi import FastAPI
from app.routers import v1

app = FastAPI()

app.include_router(
    v1.router,
    prefix="/api/v1"
)

您可以通過這種方式隨意鏈接路由器,從而允許您拆分大型應用程序并擁有版本化的API。

Dockerizing and Deploying

Fastapi 的作者使出乎意料的輕松之一就是 Dockerizing!默認的Dockerfile是2行!

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7

COPY ./app /app

是否想通過自動重新加載進行 Dockerize 開發?這是我在撰寫文件中使用的秘方:

version: "3"
services:
  test-api:
    build: ..
    entrypoint: '/start-reload.sh'
    ports:
        - 8080:80
    volumes:
        - ./:/app

這會將當前目錄掛載為app并將在任何更改時自動重新加載。您可能還想將app / app用于更大的應用程序。

關于Python使用Fastapi開發的步驟就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澄城县| 呼玛县| 衢州市| 库伦旗| 绥化市| 安丘市| 阳高县| 尉氏县| 金沙县| 江陵县| 合江县| 安泽县| 玛多县| 开化县| 株洲市| 南丹县| 乌兰浩特市| 田东县| 潞西市| 黄平县| 建德市| 平阳县| 商都县| 汶上县| 三河市| 盘山县| 岐山县| 陆丰市| 金堂县| 水城县| 当雄县| 苗栗市| 竹北市| 昌宁县| 龙游县| 萨嘎县| 科技| 定陶县| 梓潼县| 鄂托克旗| 固安县|