什麼是查詢參數?

http://127.0.0.1:8000/get?name=xxx&age=18

http://127.0.0.1:8000/get?age=18&name=xxx

在 url 的 ? 後面跟著的一組或多組鍵值對,就是查詢參數

FastAPI 的查詢參數

  • 當聲明了不屬於路徑參數以外的其他函數參數時, FastAPI 會自動解析為查詢參數
  • 和路徑參數不同,查詢參數可以是可選非必填的,也可以具有默認值

路徑參數+請求參數的栗子

from fastapi import FastAPI
import uvicorn app = FastAPI() # 路徑參數+請求參數
@app.get("/items/{item_id}")
async def read_item(item_id: str, name: str):
return {"item_id": item_id, "name": name} if __name__ == "__main__":
uvicorn.run(app="3_get_query:app", host="127.0.0.1", port=8080, reload=True, debug=True)

正確傳參的請求結果

必傳參數+可選參數的栗子

from typing import Optional
# 必傳參數+可選參數
@app.get("/items")
async def read_item(item_id: str, name: Optional[str] = None):
return {"item_id": item_id, "name": name}

不傳 name 的請求結果

name 沒傳所以取默認值 None

查詢參數類型自動轉換

# 查詢參數類型轉換
@app.get("/items/{item_id}")
async def read_item(item_id: str, q: Optional[str] = None, short: bool = False):
item = {"item_id": item_id}
if q:
item.update({"q": q})
if not short:
# 如果 short == False,則加多一個鍵 description
item.update(
{"description": "This is an amazing item that has a long description"}
)
return item

short 是 True 的請求結果

short 是 False 的請求結果

指定枚舉類型請求參數的栗子

from enum import Enum
from typing import Optional, List # 自定義枚舉類
class ModelName(Enum):
boy = "男"
girl = "女"
unknown = "不知道" @app.get("/item_enum")
async def read_item(name: str,
sex: Optional[ModelName] = ModelName.unknown):
return {
"name": name,
"sex": sex
}

參數傳枚舉值的請求結果

不傳 sex 的請求結果

不傳 sex,會取 sex 的默認值:枚舉類中的 unknown 的值

查詢參數能用 List[str] 傳參嗎?

# List[str]
@app.get("/list")
async def read_item(address: List[str] = None):
return {"address": address}

postman 請求的結果

  • 即使參數值寫成數組形式也不會傳值成功,因為查詢參數都是字符串
  • 所以 ["廣州","深圳"] 其實是一個字符串 str,並不是 List[str],那要怎麼才能傳數組呢?

分開多次傳 address 可以嗎?

答案也是不行

那要怎麼做呢?

用 Query 庫! 下一篇會講到!

https://www.cnblogs.com/poloyy/p/15306809.html

FastAPI(5)- get 請求 - 查詢參數 Query Parameters的更多相關文章

  1. Hibernate5.x版本HQL限定查詢 Legacy-style query parameters (`?`) are no longer supported

    在此版本的限定查詢和4.0版本的限定查詢: 如果查詢語句是: String hql = "select u from User u where u.gender = ?"; 會出現 ...

  2. FeignClient調用POST請求時查詢參數被丟失的情况分析與處理

    前言 本文沒有詳細介紹 FeignClient 的知識點,網上有很多優秀的文章介紹了 FeignCient 的知識點,在這裏本人就不重複了,只是專注在這個問題點上. 查詢參數丟失場景 業務描述: 業務 ...

  3. ASP.NET Core 請求/查詢/響應參數格式轉換(下劃線命名)

    業務場景: 在 ASP.NET Core 項目中,所有的代碼都是駱駝命名,比如userName, UserName,但對於 WebApi 項目來說,因為業務需要,一些請求.查詢和響應參數的格式需要轉換 ...

  4. DAX/PowerBI系列 - 查詢參數用法詳解(Query Parameter)

    PowerBI  - 查詢參數用法詳解(Query Parameter) 很多人都不知道查詢參數用來幹啥,下面總結一下日常項目中常用的幾個查詢參數的地方.(本人不太歡hardcode的東西) 使用查詢 ...

  5. SpringBoot16 MockMvc的使用、JsonPath的使用、請求參數問題、JsonView、分頁查詢參數、JsonProperty

    1 MockMvc的使用 利用MockMvc可以快速實現MVC測試 坑01:利用MockMvc進行測試時應用上下文路徑是不包含在請求路徑中的 1.1 創建一個SpringBoot項目 項目脚手架 1. ...

  6. Solr學習總結(四)Solr查詢參數

    今天還是不會涉及到.Net和數據庫操作,主要還是總結Solr 的查詢參數,還是那句話,只有先明白了solr的基礎內容和查詢語法,後續學習solr 的C#和數據庫操作,都是水到渠成的事.這裏先列出sol ...

  7. solr與.net系列課程(四)solr查詢參數的講解與.net如何獲取solr數據

    solr與.net系列課程(四)solr查詢參數的講解與.net如何獲取solr數據 上一節我們完成了solr連接數據庫,細心的朋友會發現一個問題,就是solr其實和語言沒有任何關系,配置完成後任何語 ...

  8. 【轉】Solr客戶端查詢參數總結

    今天還是不會涉及到.Net和數據庫操作,主要還是總結Solr 的查詢參數,還是那句話,只有先明白了solr的基礎內容和查詢語法,後續學習solr 的C#和數據庫操作,都是水到渠成的事.這裏先列出sol ...

  9. tomcat解决GET請求中文參數亂碼

    通常,在使用Spring MVC框架的應用程序中,為了解决中文參數亂碼的問題,都會添加如下過濾器配置: <filter> <filter-name>encodingFilter ...

  10. PowerBI開發 第八篇:查詢參數

    在PowerBI Desktop中,用戶可以定義一個或多個查詢參數(Query Parameter),參數的功能是為了實現PowerBI的參數化編程,使得Data Source的屬性.替換值和過濾數據 ...

隨機推薦

  1. 詳解Java 8中Stream類型的“懶”加載

    在進入正題之前,我們需要先引入Java 8中Stream類型的兩個很重要的操作: 中間和終結操作(Intermediate and Terminal Operation) Stream類型有兩種類型的 ...

  2. jQuery編程的最佳實踐

    好像是feedly訂閱裏看到的文章,讀完後覺得非常不錯,譯之備用,多看受益. 加載jQuery 1.堅持使用CDN來加載jQuery,這種別人服務器免費幫你托管文件的便宜幹嘛不占呢.點擊查看使用CDN ...

  3. 服務器一般達到多少qps比較好[轉]

    你好,每秒查詢率QPS是對一個特定的查詢服務器在規定時間內所處理流量多少的衡量標准,在因特網上,作為域名系統服務器的機器的性能經常用每秒查詢率來衡量. 原理:每天80%的訪問集中在20%的時間裏,這2 ...

  4. Hibernate+DWR無刷新三級聯動

    DWR(Direct Web Remoting)是一個用於改善web頁面與Java類交互的遠程服務器端Ajax開源框架,可以幫助開發人員開發包含AJAX技術的網站.它可以允許在瀏覽器裏的代碼使用運行在 ...

  5. Selenium實現的技巧

    截圖功能:    try { File srcFile = ((TakesScreenshot)dr).getScreenshotAs(OutputType.FILE);                ...

  6. CRM-stark組件

    stark組件 1. stark也是一個app(用startapp stark創建),目標時把這個做成一個可以拔插的組件 2. setting文件下INSTALLED_APPS 路徑要配置好(app的 ...

  7. C. Trailing Loves (or L&#39;oeufs?)

    題目鏈接:http://codeforces.com/contest/1114/problem/C 題目大意:給你n和b,讓你求n的階乘,轉換成b進制之後,有多少個後置零. 具體思路:首先看n和b,都 ...

  8. InnoDB 存儲引擎的主要知識點介紹

    本文轉載自:Draveness,略有修改 原文鏈接:『淺入淺出』MySQL 和 InnoDB · 面向信仰編程 作為一名開發人員,在日常的工作中會難以避免地接觸到數據庫,無論是基於文件的 sqlite ...

  9. docker 操作

    docker daemon 設置代理 http_proxy=109.105.4.17:8118 & systemctl start docker centos: Edit /etc/sysco ...

  10. You can also run `php --ini` inside terminal to see which files are used by PH P in CLI mode

    在php.ini中打開extension=php_fileinfo.dll 就可以了