欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python使用Fastapi開(kāi)發(fā)的步驟-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Python使用Fastapi開(kāi)發(fā)的步驟,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站是專(zhuān)業(yè)的柳江網(wǎng)站建設(shè)公司,柳江接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行柳江網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

Fastapi是一個(gè)基于python的框架,該框架鼓勵(lì)使用Pydantic和OpenAPI(以前稱(chēng)為Swagger)進(jìn)行文檔編制,使用Docker進(jìn)行快速開(kāi)發(fā)和部署以及基于Starlette框架進(jìn)行的簡(jiǎn)單測(cè)試。

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

安裝

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

確保您使用的是Python 3.6.7+ 如果 pippython 給您python 2版本,則可能必須使用 pip3python3 。另外,請(qǐng)查看我關(guān)于python入門(mén)的文章。

pip install fastapi uvicorn

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

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"Hello": "World"}
運(yùn)行開(kāi)發(fā)

然后運(yùn)行以進(jìn)行開(kāi)發(fā),可以運(yùn)行uvicorn main:app --reload

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

驗(yàn)證

如前所述,很容易驗(yàn)證數(shù)據(jù)(并為接受的數(shù)據(jù)格式生成Swagger文檔)。只需從fastapi添加Query導(dǎo)入,然后使用它來(lái)強(qiáng)制驗(yàn)證:

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 }

第一個(gè)參數(shù)...是默認(rèn)值,如果用戶(hù)不提供值則提供該默認(rèn)值。如果設(shè)置為None,則沒(méi)有默認(rèn)值,并且該參數(shù)是可選的。為了沒(méi)有默認(rèn)值并且該參數(shù)是強(qiáng)制性的,請(qǐng)使用Ellipsis ,或...代替。

如果運(yùn)行此代碼,則會(huì)在swagger UI上自動(dòng)看到更新:

Swagger UI允許您查看新的/ user路由并使用特定的用戶(hù)ID進(jìn)行請(qǐng)求

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

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

Post 路線(xiàn)

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

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

在這種情況下,您可以看到user_id僅被定義為一個(gè)沒(méi)有QueryPath的整數(shù);這意味著它將在POST請(qǐng)求正文中。如果您接受更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),例如JSON數(shù)據(jù),則應(yīng)研究請(qǐng)求模型。

請(qǐng)求和響應(yīng)模型

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

只需像這樣聲明模型:

from pydantic import BaseModel

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

然后,如果您希望將用戶(hù)模型作為輸入,則可以執(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分解為路由。例如,我已經(jīng)在我的 API 中找到了這個(gè)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中使用上面的用戶(hù)代碼-只需導(dǎo)入APIRouter并使用@ router.get('/')< aaaa>而不是 @ app.get('/ user')。它會(huì)自動(dòng)路由到 / user / ,因?yàn)樵撀酚墒窍鄬?duì)于前綴的。

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

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

from fastapi import FastAPI
from app.routers import v1

app = FastAPI()

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

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

Dockerizing and Deploying

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

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

COPY ./app /app

是否想通過(guò)自動(dòng)重新加載進(jìn)行 Dockerize 開(kāi)發(fā)?這是我在撰寫(xiě)文件中使用的秘方:

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

這會(huì)將當(dāng)前目錄掛載為app并將在任何更改時(shí)自動(dòng)重新加載。您可能還想將app / app用于更大的應(yīng)用程序。

關(guān)于Python使用Fastapi開(kāi)發(fā)的步驟就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

本文名稱(chēng):Python使用Fastapi開(kāi)發(fā)的步驟-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://aaarwkj.com/article18/cdppdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站維護(hù)服務(wù)器托管、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
国产乱码精品免费一区二区av| 日本熟女视频中文字幕| 亚洲一区麻豆文化传媒| 日韩不卡一区二区三区| 国产欧美日韩精品国产| 欧美一区二区三区成人网| 国产三级三级三级精品8ⅰ区| 日本道二区视频中文字幕| 亚州无吗一区二区三区| 欧美高清一区二区三区不卡| 日本一区二区三级在线观看| 色婷婷精品一区二区三区| 亚洲午夜精品久久久天堂 | 色自拍偷拍另类欧洲美女| 日本一区二区不卡高清| 国产欧美日韩精品久久久久久 | 成人免费毛片1000部| 色综合色很天天综合色| 中文字幕熟女av一区二区| 日本免费一区二区三区视频观看| 91久久一区二区秋霞免费| 黑人巨大精品欧美久久| 国产三级视频在线观看视频 | 久久精品国产精品日韩欧美| 精品人妻一区二区三区mp4| 日韩欧美乱码一区二区| 亚洲天堂免费在线播放| 97视频网站在线观看| 日韩伦理高清在线观看| 中文字幕乱码熟女人妻视频| 手机在线看国产后入| 欧美日韩久久久久久精品| 欧美亚洲国产日韩在线高清| 色呦呦视频在线免费观看| 亚洲午夜av久久乱码| 久久精品国产av极品| 亚洲成色在线综合剧情网站| 日韩精品国产专区一区| 欧美日韩性生活视频在线| 亚洲日本韩国美女二区| 亚洲三区久久婷婷激情|