3. FastAPI 開發 GET 請求,queryparams查詢參數


前言

HTTP協議中,GET請求的參數放在 URL 后面,一般也叫query params 查詢參數。

查詢參數

# -*- coding:utf-8 -*-

from fastapi import FastAPI  # 導入FastAPI
import uvicorn               # uvicorn:主要用於加載和提供應用程序的服務器
from enum import Enum

app = FastAPI()              # 創建一個app實例

data = ["北京", "上海", "廣州", "深圳"]
@app.get("/items")
async def read_item(start: int = 0, end: int = 4):
    return data[start: end]


if __name__ == '__main__':
uvicorn.run(app='demo001:app', host="127.0.0.1", port=8000, reload=True, debug=True)

默認規定了兩個參數,一個是start另一個是end,初始值是0和4,看下請求結果, Data 中的四個值都會返回回來。

增加參數看一下響應的結果,end=3,返回三個值。


需求1:要實現 start 必填,end 非必填

# -*- coding:utf-8 -*-

from fastapi import FastAPI  # 導入FastAPI
import uvicorn               # uvicorn:主要用於加載和提供應用程序的服務器
from typing import Optional

app = FastAPI()              # 創建一個app實例

data = ["北京", "上海", "廣州", "深圳"]
@app.get("/items")
async def read_item(start: int = 0, end: Optional[int] = None):
    if end:  # 如果輸入end,則返回下一行 data[start: end];否則返回 data[start: -1]
        return data[start: end]
    return data[start: -1]  # 默認返回到最后一個,-1 表示最后一個


if __name__ == '__main__':
uvicorn.run(app='demo001:app', host="127.0.0.1", port=8000, reload=True, debug=True)

看一下效果,不輸入 end


需求2:對輸入的參數進行長度限制,限制長度 2-8位。

from fastapi import FastAPI, Query
import uvicorn

app = FastAPI()
@app.get("/items/")
def read_items(name: str = Query(..., min_length=2,max_length=8)):
    results = {"items": [{"id": "001"}, {"name": "tester"}]}
    if name:
        results.update({"name": name})
    return results


if __name__ == '__main__':
    uvicorn.run(app='demo001:app', host="127.0.0.1", port=8000, reload=True, debug=True)
  • 當使用 Query 且需要聲明一個值是必需的時,可以將 ... 用作第一個參數值。
  • min_length :最小長度
  • max_length :最大長度

1. 看結果,輸入合法值。

  1. 輸入不合法的值,輸入 1 位。

  1. 輸入不合法的值,輸入 9 位。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM