Browse Source

🐛 fix(api): 统一错误处理格式并修复状态码问题

- 帖子创建接口: 标准化错误响应格式,确保返回500状态码
- 取消关注接口: 优化错误处理逻辑,固定返回500状态码
- 关注用户接口: 添加Zod验证错误处理,返回400状态码;标准化其他错误响应格式

🐛 fix(api): 改进错误消息处理

- 所有接口统一使用error instanceof Error判断来获取错误消息
- 当错误不是Error实例时使用默认错误消息
- 移除类型断言,采用更安全的错误处理方式
yourname 5 tháng trước cách đây
mục cha
commit
f26893b32f

+ 4 - 2
src/server/api/posts/post.ts

@@ -49,8 +49,10 @@ const app = new OpenAPIHono<AuthContext>().openapi(routeDef, async (c) => {
     const result = await postService.createPost(user.id, data);
     return c.json(result, 200);
   } catch (error) {
-    const { code = 500, message = '创建帖子失败' } = error as Error & { code?: number };
-    return c.json({ code, message }, code);
+    return c.json({ 
+      code: 500, 
+      message: error instanceof Error ? error.message : '创建帖子失败' 
+    }, 500);
   }
 });
 

+ 4 - 2
src/server/api/users/[id]/follow/delete.ts

@@ -71,8 +71,10 @@ const app = new OpenAPIHono<AuthContext>().openapi(routeDef, async (c) => {
     
     return c.json({ success: true, message: '取消关注成功' }, 200);
   } catch (error) {
-    const { code = 500, message = '取消关注失败' } = error as Error & { code?: number };
-    return c.json({ code, message }, code as StatusCode);
+    return c.json({ 
+      code: 500, 
+      message: error instanceof Error ? error.message : '取消关注失败' 
+    }, 500);
   }
 });
 

+ 7 - 2
src/server/api/users/[id]/follow/post.ts

@@ -54,8 +54,13 @@ const app = new OpenAPIHono<AuthContext>().openapi(routeDef, async (c) => {
     const result = await followService.followUser(user.id, params.id);
     return c.json(result, 200);
   } catch (error) {
-    const { code = 500, message = '关注用户失败' } = error as Error & { code?: number };
-    return c.json({ code, message }, code);
+    if (error instanceof z.ZodError) {
+      return c.json({ code: 400, message: '参数错误' }, 400);
+    }
+    return c.json({ 
+      code: 500, 
+      message: error instanceof Error ? error.message : '关注用户失败' 
+    }, 500);
   }
 });