久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網
      最全最豐富的資訊網站

      Python 快速使用 REST API

      Python 快速使用 REST API

      最近一直在研究一個新的 Python 語言的API,在一位同事的建議下,我們決定使用 Fastapi 作為我們的框架。

      Fastapi是一個基于python的框架,該框架鼓勵使用Pydantic和OpenAPI(以前稱為Swagger)進行文檔編制,使用Docker進行快速開發(fā)和部署以及基于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"}

      運行開發(fā)

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

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

      驗證

      如前所述,很容易驗證數(shù)據(jù)(并為接受的數(shù)據(jù)格式生成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 }

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

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

      Python 快速使用 REST API

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

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

      如果要改為使用路徑參數(shù)(以使其為 /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的整數(shù);這意味著它將在POST請求正文中。如果您接受更復雜的數(shù)據(jù)結構,例如JSON數(shù)據(jù),則應研究請求模型。

      請求和響應模型

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

      只需像這樣聲明模型:

      from pydantic import BaseModel  class User(BaseModel):     id:: int     name: str     email: str

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

      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 開發(fā)?這是我在撰寫文件中使用的秘方:

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

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

      有用的網址

      所有這些信息都來自 Fastapi網站,該文檔具有出色的文檔,我鼓勵您閱讀。此外,作者在 Gitter 上非?;钴S并樂于助人!

      結論

      就是這樣-我希望本指南對您有所幫助,并且您會像我一樣喜歡使用 Fastapi。

      推薦教程:Python教程

      贊(0)
      分享到: 更多 (0)
      網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號