对四大经典请求方式的疑惑

Apifox 中的 `Param` 和 HTTP 请求的结构。

### ✅ 1. Apifox 中的 "Param" 部分对应什么?

在 Apifox(以及类似的 API 工具如 Postman)中,当你在接口配置里看到 **`Params`** 或 **`Query Params`** 这个标签页时,它**专门用于设置 URL 的查询参数(Query Parameters)**。

这些参数最终会**附加在 URL 的 `?` 后面**,也就是所说的“请求行”(Request Line)。

#### 🔹 示例

你在 Apifox 的 `Params` 标签页中添加了两个参数:

| Key | Value |
| :------ | :------- |
| `name` | `john` |
| `age` | `30` |

那么,当发送请求时,Apifox 会自动将这些参数拼接到 URL 上:

GET /api/users?name=john&age=30

- **`/api/users`** 是请求路径。
- **`?name=john&age=30`** 就是查询字符串(Query String),也就是你在 `Params` 里填写的内容。

---

### ✅ 2. 在 `Param` 里写了参数,是不是说明这个传值参数是写在请求行的?

**是的,完全正确!**

HTTP 请求的“请求行”(Request Line)格式是:

<HTTP方法> <请求路径>?<查询参数> HTTP/<版本>

例如:

GET /api/users?name=john&age=30 HTTP/1.1

- 你在 Apifox 的 `Params` 中填写的所有键值对,都会被自动拼接到 URL 的 `?` 后面。
- 这个完整的 URL(包含查询参数)就是请求行的一部分。

所以,**只要你在 `Params` 标签页里添加参数,就意味着这些参数会通过 URL 查询字符串传递,也就是写在请求行中**。

---

### 🔄 对比其他传参方式(Apifox 中的位置)

为了更清晰,我们对比一下 Apifox 中不同传参方式的位置和最终效果:

| 传参方式 | Apifox 中的位置 | 数据位置 | 示例 |
| :--- | :--- | :--- | :--- |
| **查询参数** | `Params` 标签页 | URL 查询字符串(请求行) | `GET /api/users?name=john` |
| **路径参数** | URL 路径中用 `{}` | URL 路径(请求行) | `GET /users/{id}` → `/users/123` |
| **请求头** | `Headers` 标签页 | HTTP 请求头 | `Authorization: Bearer xyz` |
| **请求体 (Form)** | `Body` → `x-www-form-urlencoded` | 请求体 | `name=john&age=30` |
| **请求体 (JSON)** | `Body` → `raw` + JSON | 请求体 | `{"name": "john", "age": 30}` |
| **文件上传** | `Body` → `form-data` | 请求体(multipart) | 上传图片、文件 |

---

### 📌 关键总结

1. **✅ 正确**:在 Apifox 的 `Params` 中填写的参数,**就是查询参数(Query Parameters)**。
2. **✅ 正确**:这些参数会**自动拼接到 URL 的 `?` 后面**,成为请求行的一部分。
3. **✅ 正确**:这意味着它们是通过 **URL 传递的**,而不是放在请求体(Body)中。
4. **后端对应**:在 Spring Boot 中,你应该使用 `@RequestParam` 来接收这些参数。

```java
@GetMapping("/api/users")
public String getUsers(@RequestParam String name, @RequestParam int age) {
return "Hello, " + name + ", you are " + age + " years old.";
}
// 对应 URL: GET /api/users?name=john&age=30
```

### ⚠️ 注意事项

- **不要混淆 `Params` 和 `Body`**:如果你在 `Body` 中也填写了 `name=john`,而 `Params` 中也有 `name=john`,它们是**两个独立的参数源**。后端需要明确指定从哪里读取(`@RequestParam` 读 `Params`,`@RequestBody` 读 `Body`)。
- **GET 请求通常只用 `Params`**:正如我们之前讨论的,GET 请求的参数应主要通过 `Params`(即查询字符串)传递,而不是 `Body`。

---

### 结论

你的理解是**完全正确**的:
**在 Apifox 的 `Param` 部分填写参数,就意味着这些参数会作为查询字符串附加在 URL 上,也就是写在 HTTP 请求行中。** 这是标准且推荐的做法。