国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

這篇具有很好參考價(jià)值的文章主要介紹了python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、安裝和基本運(yùn)行訪問

python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
官方示例代碼

from typing import Union

from fastapi import FastAPI

app = FastAPI()


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


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

運(yùn)行命令:uvicorn test:app --reload
注意:運(yùn)行命令app前面那個(gè)是文件位置,官方的文件名叫main,要以實(shí)際的文件名為準(zhǔn),不然找不到app
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

二、post請(qǐng)求和json參數(shù)嵌套

1、post請(qǐng)求 寫法一:一層參數(shù)

class Hero(BaseModel):
    q:str
    w:str
    e:str
    # 可以為不傳這個(gè)自動(dòng)也可以傳字符串,不傳這個(gè)字段時(shí)該字段默認(rèn)值為None
    r:Union[str, None] = None

@app.post('/ya_suo')
def ya_suo(hero:Hero):
    print(hero.r)
    #取值
    if hero.r==None:
        return '大招都沒有'
    return hero

測(cè)試無r參數(shù)情況
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口測(cè)試有r參數(shù)情況
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

2、post請(qǐng)求 寫法二:參數(shù)嵌套

2.1、錯(cuò)誤寫法

@app.post('/ti_mo')
def ti_mo(q:str,w:str,e:str,r:Union[str, None] = None):
    a={"q技能":q,"w技能":w,"e技能":e,"r技能":r}
    return a

報(bào)錯(cuò)了
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

2.2、正確寫法

這樣才行q:str,這種只用于路徑參數(shù),因?yàn)閞可以為空或者不寫,可以不用是路徑參數(shù)
@app.post('/ti_mo1/{cd}')
def ti_mo1(cd:str,r:Union[str, None] = None):
    a={"技能cd":str(cd)+'s',"r技能":r}
    return a
@app.post('/ti_mo1/{cd}')
def ti_mo1(cd:str,r:Union[str, None] = None):
    a={"技能cd":str(cd)+'s',"r技能":r}
    return a

python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

2.3、嵌套多個(gè)請(qǐng)求參數(shù)(不明白的話看下面的postman的請(qǐng)求參數(shù)就懂了)

#這2個(gè)就直接用官方寫的了
class Item(BaseModel):
    name: str
    description: Union[str, None] = None
    price: float
    tax: Union[float, None] = None
class User(BaseModel):
    username: str
    full_name: Union[str, None] = None

@app.post('/q_t/{id}')
def q_t(id:int,item:Item,user:User):
    return {'id':id,'item':item,'user':user}

python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

2.4、嵌套單個(gè)請(qǐng)求參數(shù)(細(xì)節(jié)max)(不明白的話看下面的postman的請(qǐng)求參數(shù)就懂了~)

#只有嵌套單個(gè)請(qǐng)求體的話請(qǐng)求參數(shù)和多個(gè)是有很大區(qū)別的
@app.post('/q_t1/{id}')
def q_t1(id:int,user:User):
    return {'id':id,'user':user}

注意:重點(diǎn)在發(fā)起請(qǐng)求的時(shí)候
希望請(qǐng)求參數(shù)格式

{
    "user": {
        "username": "dave",
        "full_name": "Dave Grohl"
    }
}

可是現(xiàn)在會(huì)報(bào)錯(cuò)
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
要這樣才會(huì)成功,可是這不是我們想要的結(jié)果
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
按照官方的解決辦法,在我這有點(diǎn)問題
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
告訴我確實(shí)一個(gè)參數(shù)(可能版本有啥問題把)
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
缺少我就先補(bǔ)上這個(gè)參數(shù)試試,發(fā)現(xiàn)就能正常使用了

@app.post('/q_t1/{id}')
def q_t1(id:int,user:User= Body(...,embed=True)):
    return {'id':id,'user':user}

最終測(cè)試
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

三、請(qǐng)求體 - 字段Field

#字段Field
class Item(BaseModel):
    name: str
    description: Union[str, None] = Field(
        default='默認(rèn)值', title="這是一個(gè)商品", max_length=300
    )
    price: float = Field(gt=0, description="商品價(jià)格必須大于0")
    tax: Union[float, None] = None


@app.post("/items/{item_id}")
def update_item(item_id: int, item: Item = Body(...,embed=True)):
    results = {"item_id": item_id, "item": item}
    return results

gt=0的意思,看源碼字段的解釋
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
測(cè)試商品價(jià)格小于等于0的情況
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
測(cè)試正常情況
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

四、請(qǐng)求參數(shù)字段使用字典列表集合嵌套

#請(qǐng)求參數(shù)字段使用字典列表集合嵌套
class Image(BaseModel):
    #檢查是否為有效的url
    url: HttpUrl
    name: str

class Item(BaseModel):
    name: str
    # 參數(shù)格式:字符串或者為空不傳這個(gè)字段
    description: Union[str, None] = None
    price: float
    # 參數(shù)格式:小數(shù)或者為空不傳這個(gè)字段
    tax: Union[float, None] = None
    tags: Set[str] = set()
    #參數(shù)格式:列表里面包含字典或者為空不傳這個(gè)字段
    images: Union[List[Image], None] = None

@app.post('/qtt/{id}')
def qtt(id:int,item:Item):
    return {"id": id, "item": item}

字段設(shè)置說明
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
測(cè)試結(jié)果和請(qǐng)求參數(shù):使用 tags: Set[str] = set(),我重復(fù)的寫了一個(gè)"metal",,被去重了,列表嵌套字典
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

五、返回結(jié)果限制返回字段

#創(chuàng)建一個(gè)有明文密碼的輸入模型和一個(gè)沒有明文密碼的輸出模型,讓密碼不返回
class UserRequest(BaseModel):
    username: str
    password: str


class UserResponse(BaseModel):
    username: str


#response_model=UserResponse  設(shè)置返回模型的字段,返回結(jié)果會(huì)過濾掉未在輸出模型中聲明的字段數(shù)據(jù)
@app.post("/user", response_model=UserResponse)
def create_user(user: UserRequest):
    #只會(huì)返回username信息
    return user

返回模型的字段不能出現(xiàn)請(qǐng)求模型字段沒有的字段
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
測(cè)試,沒有返回密碼字段
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

六、異常信息處理

#基本使用異常信息
e=[1,2,4,5,6,9]
@app.get('/err/{id}')
def err(id:int):
    if id not in e:
        raise HTTPException(status_code=404,detail='id不存在')
    return {'id':id}

輸入id為3,不存在的結(jié)果
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
輸入id為1,存在的結(jié)果
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

七、接口文檔

http://127.0.0.1:8000/docs
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

八、全局依賴設(shè)置全局token,name在header里面校驗(yàn),獲取header的信息作為變量使用

from fastapi import Depends, FastAPI, Header, HTTPException

#token: str = Header(...) header信息使用
def verify_token(token: str = Header(...)):
    if token != "em123dca":
        raise HTTPException(status_code=400, detail="Token 無效")
#方法名字沒啥要求
def name(name: str = Header(...)):
    if name != "lcf":
        raise HTTPException(status_code=400, detail="該用戶沒有權(quán)限訪問")

#全局依賴
app = FastAPI(dependencies=[Depends(verify_token), Depends(name)])


@app.get("/header_token")
#可以這樣獲取header的信息(做一些token信息解析),應(yīng)該有其他方法的,沒找到,誰找到告訴我一下
def get_token(name: str = Header(...),token: str = Header(...)):
    return {'name':name,'token':token}

測(cè)試:正確的token和有權(quán)限的name
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口測(cè)試:正確的token和無權(quán)限的name
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
測(cè)試:錯(cuò)誤的token和有權(quán)限的name
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
都錯(cuò)誤的話先校驗(yàn)token的,因?yàn)榉椒▽懺谇懊?br>python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

九、啟動(dòng)服務(wù)器的第二種方式,讓同局域網(wǎng)下用戶可以訪問

查詢下自己的局域網(wǎng)ip地址

python查詢ip地址
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

cmd查詢ip地址
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

from fastapi import FastAPI

app = FastAPI()
@app.get("/")
def s():
    return '局域網(wǎng)測(cè)試12'

if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app='test2:app',host='192.168.11.177',port=8001, reload=True)

python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口

測(cè)試
python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口
優(yōu)化下啟動(dòng)代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-404514.html

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@time    : 2022/6/21 
@Author  : LL
@File    : test2.py
'''
from fastapi import FastAPI
def get_ip():
    import socket
    res = socket.gethostbyname(socket.gethostname())
    return res

app = FastAPI()
@app.get("/")
def s():
    return '局域網(wǎng)測(cè)試12'

if __name__ == '__main__':
    import uvicorn
    #app='test2:app'  文件位置:app
    uvicorn.run(app='test2:app',host=get_ip(),port=8001, reload=True)

到了這里,關(guān)于python fastapi 入門教程,每個(gè)案例都使用postman進(jìn)行測(cè)試寫的接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 樹莓派系統(tǒng)入門教程(三)—— 使用Windows上的VSCode遠(yuǎn)程連接樹莓派進(jìn)行Python開發(fā)

    很多開發(fā)者更喜歡在大屏幕和強(qiáng)大的開發(fā)環(huán)境中編寫代碼,但同時(shí)他們希望能在樹莓派這樣的微型計(jì)算機(jī)上執(zhí)行和測(cè)試代碼。VSCode提供了一個(gè)強(qiáng)大的遠(yuǎn)程開發(fā)工具,可以讓你在Windows主機(jī)上編寫代碼,同時(shí)在樹莓派上執(zhí)行。下面將為你詳細(xì)介紹如何實(shí)現(xiàn): 1. 安裝VSCode和SSH擴(kuò)展

    2024年02月12日
    瀏覽(21)
  • WPF真入門教程26--項(xiàng)目案例--歐姆龍PLC通訊工具

    WPF真入門教程26--項(xiàng)目案例--歐姆龍PLC通訊工具

    前面已經(jīng)完成了25篇的文章介紹,概括起來就是從0開始,一步步熟悉了wpf的概念,UI布局控件,資源樣式文件的使用,MVVM模式介紹,命令Command等內(nèi)容,這節(jié)來完成一個(gè)實(shí)際的項(xiàng)目開發(fā),雖然小案例,但是可以把前面的知識(shí)融合起來,比如控件的布局,命令的綁定,視圖模型的

    2024年02月02日
    瀏覽(22)
  • WPF真入門教程28--項(xiàng)目案例--MQTT服務(wù)器和客戶端

    WPF真入門教程28--項(xiàng)目案例--MQTT服務(wù)器和客戶端

    這個(gè)案例還是布局加視圖模型,樣式應(yīng)用,業(yè)務(wù)邏輯,該項(xiàng)目是一個(gè)mqtt服務(wù)器和客戶端的通信工具,這里不去分析mqtt的通信原理,關(guān)注在于wpf技能的應(yīng)用,能夠掌握這個(gè)例子,離項(xiàng)目開發(fā)也差不多了,只是沒有跟db打交道,本項(xiàng)目重點(diǎn)在于理解mvvm模式,開發(fā)環(huán)境依然是vs20

    2024年01月17日
    瀏覽(30)
  • 很合適新手入門使用的Python游戲開發(fā)包pygame實(shí)例教程-01[開發(fā)環(huán)境配置與第一個(gè)界面]

    很合適新手入門使用的Python游戲開發(fā)包pygame實(shí)例教程-01[開發(fā)環(huán)境配置與第一個(gè)界面]

    我們假定你已經(jīng)安裝好了我們開發(fā)python程序的sublime text,如果不知道怎么安裝的可以參照我前面的博文。這里只需要解決的是配置好Pygame的問題。本篇博文主要解決開發(fā)環(huán)境配置以及第一個(gè)游戲界面的顯示問題。 文章原出處: https://blog.csdn.net/haigear/article/details/130173836 沒有

    2024年01月25日
    瀏覽(35)
  • “音游制作實(shí)用插件-Koreographer入門教程”,“Unity2D 音游案例-節(jié)奏大師(基于Koreographer)”

    “音游制作實(shí)用插件-Koreographer入門教程”,“Unity2D 音游案例-節(jié)奏大師(基于Koreographer)”

    源碼(Github) 第一個(gè)是免費(fèi)視頻 音游制作實(shí)用插件-Koreographer入門教程) 第二個(gè)是siki學(xué)院的收費(fèi)視頻 Unity2D 音游案例-節(jié)奏大師(基于Koreographer) 視頻演示了,球的彈跳,方塊的縮放,特效的顯示 音游制作實(shí)用插件-Koreographer入門教程 ogg,mp3改下后綴成ogg 文件,紫圖標(biāo) 文件

    2024年02月13日
    瀏覽(71)
  • 【 Python 入門教程 ② 】Python IDLE 下載教程

    【 Python 入門教程 ② 】Python IDLE 下載教程

    本章節(jié)我們將向大家介紹如何下載 Python 官方編輯器 —— IDLE。 Python 可應(yīng)用于多平臺(tái)包括 Windows、Linux 和 Mac OS X。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。) Win 9x/NT/2000 Macintosh (Intel, PPC, 68K) OS/2 DOS (多個(gè)DOS版本) PalmOS Nokia 移動(dòng)手機(jī) Windows CE Acorn/RISC OS BeOS Amiga VMS/OpenVM

    2023年04月18日
    瀏覽(24)
  • python爬蟲入門教程(非常詳細(xì)):如何快速入門Python爬蟲?

    示例示例Python爬蟲入門教程什么是爬蟲爬蟲(又稱網(wǎng)絡(luò)爬蟲)是一種按照一定的規(guī)則,自動(dòng)地抓取萬維網(wǎng)信息的程序或者腳本。它可以自動(dòng)地抓取網(wǎng)頁內(nèi)容,并從中提取有用的數(shù)據(jù),存儲(chǔ)到本地文件或數(shù)據(jù)庫中。 Python爬蟲入門教程 1. 什么是爬蟲爬蟲(又稱網(wǎng)絡(luò)爬蟲)是一種

    2024年02月10日
    瀏覽(30)
  • 【Spring教程30】Spring框架實(shí)戰(zhàn):從零開始學(xué)習(xí)SpringMVC 之 Rest風(fēng)格簡(jiǎn)介與RESTful入門案例

    【Spring教程30】Spring框架實(shí)戰(zhàn):從零開始學(xué)習(xí)SpringMVC 之 Rest風(fēng)格簡(jiǎn)介與RESTful入門案例

    歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實(shí)現(xiàn),如果您對(duì)Maven還很陌生,請(qǐng)移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環(huán)境》,本文的上一篇為《SpringMVC 之 服務(wù)器響應(yīng)》 REST(Representational State Transfer),表現(xiàn)形式狀態(tài)轉(zhuǎn)

    2024年02月04日
    瀏覽(23)
  • Python 入門教程

    Python 是一門優(yōu)雅、簡(jiǎn)潔、易讀易寫的編程語言。它被廣泛地應(yīng)用于科學(xué)計(jì)算、 Web 開發(fā)、自動(dòng)化運(yùn)維等領(lǐng)域,并且擁有強(qiáng)大的社區(qū)支持和生態(tài)系統(tǒng)。 在開始學(xué)習(xí) Python 前,需要先安裝 Python??梢郧巴?Python 的官方網(wǎng)站 https://www.python.org/downloads/ 下載并安裝最新版本的 Python。

    2024年02月08日
    瀏覽(26)
  • Python入門教程 | Python 基礎(chǔ)語法

    第一個(gè)字符必須是字母表中字母或下劃線 _ 。 標(biāo)識(shí)符的其他的部分由字母、數(shù)字和下劃線組成。 標(biāo)識(shí)符對(duì)大小寫敏感。 在 Python 3中,可以用中文作為變量名,非 ASCII 標(biāo)識(shí)符也是允許的了。默認(rèn)情況下,Python 3 源碼文件以 UTF-8 編碼,所有字符串都是 unicode 字符串。 在Python中

    2024年02月11日
    瀏覽(90)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包