Bläddra i källkod

🐛 fix(routes): 修复路线搜索API参数验证错误响应格式

- 重构错误响应Schema,使用zodErrorSchema替代原errorSchema
- 调整错误响应结构,包含success状态和error对象
- 更新集成测试断言,验证新的错误响应格式

📝 docs(routes): 更新API文档中的错误响应描述

- 更新路线搜索API的400错误响应文档
- 反映新的Zod验证错误响应结构
yourname 3 månader sedan
förälder
incheckning
23f207370a

+ 9 - 4
src/server/api/routes/index.ts

@@ -235,10 +235,15 @@ const routeSearchResultSchema = z.object({
 const errorSchema = z.object({
   code: z.number(),
   message: z.string(),
-  errors: z.array(z.object({
-    path: z.array(z.string()),
+});
+
+// Zod验证错误Schema
+const zodErrorSchema = z.object({
+  success: z.boolean(),
+  error: z.object({
+    name: z.string(),
     message: z.string()
-  })).optional()
+  })
 });
 
 // 创建路线搜索路由
@@ -257,7 +262,7 @@ const searchRoutesRoute = createRoute({
     },
     400: {
       description: '参数错误',
-      content: { 'application/json': { schema: errorSchema } }
+      content: { 'application/json': { schema: zodErrorSchema } }
     },
     500: {
       description: '搜索路线失败',

+ 5 - 4
tests/integration/server/routes/search.integration.test.ts

@@ -307,8 +307,9 @@ describe('用户端路线搜索API集成测试', () => {
       IntegrationTestAssertions.expectStatus(response1, 400);
       if (response1.status === 400) {
         const responseData = await response1.json();
-        expect(responseData.code).toBe(400);
-        expect(responseData.message).toContain('车型必须是有效的类型');
+        console.debug('Invalid vehicle type response:', responseData);
+        expect(responseData.success).toBe(false);
+        expect(responseData.error.message).toContain('车型必须是有效的类型');
       }
 
       // 无效出行方式参数
@@ -322,8 +323,8 @@ describe('用户端路线搜索API集成测试', () => {
       IntegrationTestAssertions.expectStatus(response2, 400);
       if (response2.status === 400) {
         const responseData = await response2.json();
-        expect(responseData.code).toBe(400);
-        expect(responseData.message).toContain('出行方式必须是有效的类型');
+        expect(responseData.success).toBe(false);
+        expect(responseData.error.message).toContain('出行方式必须是有效的类型');
       }
     });
   });