fix: 修复 YAML 块语法 body 匹配失败问题

- normalize_yaml_body 函数在解析 JSON 前添加 trim() 处理,解决 YAML `|` 和 `>` 语法产生的前导空格问题
- 修复 multiple_login.yaml 中 response body 格式错误(YAML 对象改为 JSON 字符串)
This commit is contained in:
2026-03-27 17:33:21 +08:00
parent 9c1d0e16b4
commit 061ceff4b8
27 changed files with 1439 additions and 415 deletions

73
mocks/v1/user/avatar.yaml Normal file
View File

@@ -0,0 +1,73 @@
# 上传头像 - Multipart 格式(数组形式,只匹配字段名)
- name: "user_upload_avatar_001"
request:
method: "POST"
path: "/v1/user/avatar"
headers:
Content-Type: "multipart/form-data"
body:
- "avatar1"
- "description1"
response:
status: 200
headers:
Content-Type: "application/json"
body: |
{
"code": 0,
"message": "头像上传成功",
"data": {
"url": "https://cdn.example.com/v1/avatars/10001.jpg",
"size": 204800,
"filename": "avatar.jpg"
}
}
- name: "user_upload_avatar_002"
request:
method: "POST"
path: "/v1/user/avatar"
headers:
Content-Type: "multipart/form-data"
body:
avatar2: "avatar"
description2: "description"
response:
status: 200
headers:
Content-Type: "application/json"
body: |
{
"code": 0,
"message": "头像上传成功",
"data": {
"url": "https://cdn.example.com/v1/avatars/10002.jpg",
"size": 204800,
"filename": "avatar.jpg"
}
}
- name: "user_upload_avatar_003"
request:
method: "POST"
path: "/v1/user/avatar"
headers:
Content-Type: "multipart/form-data"
body: >
{
"avatar3": "avatar"
"description3": "description"
}
response:
status: 200
headers:
Content-Type: "application/json"
body: |
{
"code": 0,
"message": "头像上传成功",
"data": {
"url": "https://cdn.example.com/v1/avatars/10003.jpg",
"size": 204800,
"filename": "avatar.jpg"
}
}

View File

@@ -0,0 +1,13 @@
# 下载用户数据文件 - file:// 协议
name: "user_download"
request:
method: "GET"
path: "/v1/user/download"
query_params:
format: "json"
response:
status: 200
headers:
Content-Type: "application/octet-stream"
Content-Disposition: "attachment; filename=user_data.json"
body: "file://./storage/v1/user_data.json"

13
mocks/v1/user/echo.yaml Normal file
View File

@@ -0,0 +1,13 @@
# 文本回显 - Text 格式
name: "user_echo"
request:
method: "POST"
path: "/v1/user/echo"
headers:
Content-Type: "text/plain"
body: "Hello V1 Mock Server"
response:
status: 200
headers:
Content-Type: "text/plain"
body: "Echo from V1: Hello V1 Mock Server"

View File

@@ -0,0 +1,24 @@
# 表单登录 - Form 格式
name: "_user_login_form"
request:
method: "POST"
path: "/v1/user/login/form"
headers:
Content-Type: "application/x-www-form-urlencoded"
body:
username: "formuser"
password: "formpass"
response:
status: 200
headers:
Content-Type: "application/json"
body: |
{
"code": 0,
"message": "表单登录成功",
"data": {
"token": "v2_form_token_xyz",
"userId": 20001,
"username": "formuser"
}
}

View File

@@ -0,0 +1,24 @@
# 获取用户信息 - GET 无 Body需要 Authorization Header
name: "user_profile"
request:
method: "GET"
path: "/v1/user/profile"
headers:
Authorization: "Bearer v1_test_token"
response:
status: 200
headers:
Content-Type: "application/json"
body: |
{
"code": 0,
"message": "获取成功",
"data": {
"userId": 10001,
"username": "admin",
"email": "admin@example.com",
"nickname": "管理员",
"avatar": "https://example.com/avatars/admin.jpg",
"createdAt": "2025-01-01T00:00:00Z"
}
}

View File

@@ -1,11 +0,0 @@
id: "user_search_admin"
request:
method: "GET"
path: "/api/v1/users"
# 请求中必须包含 role=admin 且 status=active
query_params:
role: "admin"
status: "active"
response:
status: 200
body: '{"users": [{"id": 1, "name": "SuperAdmin"}]}'