Leonurus-free

查询参数和表单参数

在 HTTP 请求中,查询参数(Query Parameters)表单参数(Form Data) 是两种不同的参数传递方式,主要区别如下:


1. 查询参数(Query Parameters)

位置:附加在 URL 后面,以 ? 开头,key=value 形式,多个参数用 & 连接。 示例

GET /deleteDocument?id=123&name=test

特点


2. 表单参数(Form Data)

位置:放在 HTTP 请求的 Body 中,格式为 application/x-www-form-urlencoded(默认)或 multipart/form-data(文件上传)。 示例

POST /deleteDocument
Content-Type: application/x-www-form-urlencoded

id=123&name=test

特点


3. 主要区别对比

特性 查询参数(Query) 表单参数(Form Data)
位置 URL 末尾(?id=123 HTTP 请求 Body
可见性 暴露在 URL 中 不可见(更安全)
适用请求方法 GETDELETE POSTPUTDELETE
数据大小限制 受 URL 长度限制(通常 2048 字符) 无严格限制(适合大数据)
适用场景 简单参数(如分页、搜索) 表单提交、敏感数据
FastAPI 接收方式 Query(...) Form(...)

4. 如何选择?


5. 在 FastAPI 中的代码示例

(1) 查询参数方式

python

from fastapi import Query

@app.delete("/deleteDocument")
async def delete_doc(id: int = Query(...)):
    return {"status": "ok", "id": id}

前端调用:

javascript

await axios.delete("/deleteDocument", { params: { id: 123 } });

(2) 表单参数方式

python

from fastapi import Form

@app.delete("/deleteDocument")
async def delete_doc(id: int = Form(...)):
    return {"status": "ok", "id": id}

前端调用:

javascript

const formData = new FormData();
formData.append("id", "123");
await axios.delete("/deleteDocument", { data: formData });

6. 总结

如果你的 DELETE 请求只是传递一个 id查询参数更简单;如果涉及复杂数据(如密码、文件),表单参数更合适