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

溫馨提示×

溫馨提示×

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

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

FastAPI構建API服務的示例分析

發布時間:2021-12-09 16:32:19 來源:億速云 閱讀:261 作者:柒染 欄目:大數據

今天就跟大家聊聊有關FastAPI構建API服務的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

FastAPI 是用來構建 API 服務的一個高性能框架。

為什么選擇 FastAPI ?

FastAPI 是一個現代、高性能 web 框架,用于構建 APIs,基于 Python 3.6 及以上版本。

最大特點:快!性能極高,可與 NodeJS, Go 媲美。

基于 Starlette 和 Pydantic,是 FastAPI 如此高性能的重要原因。

還具備代碼復用性高,容易上手,健壯性強的優點。

個人還覺得,FastAPI 還有一個非常強的優勢:方便的 API 調試,生成 API 文檔,直接能夠做到調試自己構建的 API,這在實際應用中,價值凸顯。

FastAPI 這么強悍,有必要研究和使用,因為無論做開發,還是做算法,API 服務真的太重要,太重要,尤其是大廠,離不開 API 接口。

 
Pydantic 做類型強制檢查

FastAPI 基于 PydanticPydantic 主要用來做類型強制檢查。參數賦值,不符合類型要求,就會拋出異常。

對于 API 服務,支持類型檢查非常有用,會讓服務更加健壯,也會加快開發速度,因為開發者再也不用自己寫一行一行的做類型檢查。

首先 pip install pydantic

然后,使用 Pydantic 做強制類型檢查。

from pydantic import ValidationError

from datetime import datetime
from typing import List
from pydantic import BaseModel

class User(BaseModel):
   id:int
   name='jack guo'
   signup_timestamp: datetime = None
   friends: List[int] = []
 

觀察到:

  • id 要求必須為 int
  • name 要求必須為 str, 且有默認值
  • signup_timestamp 要求為 datetime, 默認值為 None
  • friends 要求為 List,元素類型要求 int, 默認值為 []

使用 User 類:

try:
   User(signup_timestamp='not datetime',friends=[1,2,3,'not number'])
except ValidationError as e:
   print(e.json())
 

id 沒有默認值,按照預期會報缺失的異常

signup_timestamp 被賦為非 datetime 類型值,按照預期會報異常

friends 索引為 3 的元素被賦值為 str,按照預期也會報異常

執行代碼,驗證是否符合預期。

執行結果顯示,符合預期

[
 {
   "loc": [
     "id"
   ],
   "msg": "field required",
   "type": "value_error.missing"
 },
 {
   "loc": [
     "signup_timestamp"
   ],
   "msg": "invalid datetime format",
   "type": "value_error.datetime"
 },
 {
   "loc": [
     "friends",
     3
   ],
   "msg": "value is not a valid integer",
   "type": "type_error.integer"
 }
]
   
快速上手 FastAPI

這是一個入門 demo, 構建以下三個路由:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class User(BaseModel):
   id: int
   name: str
   friends: list


@app.get("/")
def index():
   return {"admin": "welcome to FastAPI"}


@app.get("/users/{user_id}")
def read_user(user_id: int, name: str = None):
   return {"user_id": user_id, "name": name}


@app.put("/users/{user_id}")
def update_user(user_id: int, user: User):
   return {"user_name": user.name, "user_id": user_id}
 

將上述代碼保存為 main.py

再安裝與構建服務相關的框架 uvicorn

安裝完成后,后臺執行:uvicorn main:app --reload 

啟動服務,顯示如下:

FastAPI構建API服務的示例分析

打開客戶端,輸入:localhost:8000,回車:

FastAPI構建API服務的示例分析

輸入請求:localhost:8000/users/5,回車,看到前臺數據,非常容易的就能傳遞到 controller 層,方便。

FastAPI構建API服務的示例分析

  輸入請求:localhost:8000/docs,回車:,看到 API 文檔界面

FastAPI構建API服務的示例分析

  點開第二個 get 請求,然后點擊 Try it out 后,便可以進行接口調試。非常方便!


FastAPI構建API服務的示例分析

 輸入user_id, name 后,點擊 Execute,執行成功。如果 user_id 輸入非數值型,點擊 Execute 后,紅框閃動一下,不會執行,直到輸入正確為止。

FastAPI構建API服務的示例分析

 輸入user_id, name 后,點擊 Execute,

能看到結果,包括請求的 URL

FastAPI構建API服務的示例分析

 也能看到,服務器響應前端,返回的結果:

FastAPI構建API服務的示例分析

看完上述內容,你們對FastAPI構建API服務的示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

沽源县| 凤山市| 外汇| 泰和县| 平湖市| 临澧县| 鄂托克前旗| 铜鼓县| 宜章县| 苍梧县| 南城县| 柳河县| 大名县| 道真| 崇文区| 民丰县| 汾阳市| 嘉兴市| 永康市| 松溪县| 谷城县| 锦州市| 雅江县| 涞水县| 启东市| 乌兰浩特市| 大石桥市| 望都县| 芜湖市| 南投县| 巫山县| 盘锦市| 乌海市| 朝阳区| 东城区| 米脂县| 民乐县| 思南县| 白河县| 晋江市| 黑山县|