RESTful API 应使用复数名词作资源路径如 /users避免动词如 /getUserByIdHTTP 方法语义严格对应操作查询参数统一小写下划线错误响应结构固定含 code、message、details状态码精准区分场景。用复数名词作资源路径别用动词RESTful 的核心是把 API 当作资源操作不是远程过程调用。所以 /users 正确/getUserById 或 /listUsers 是典型反模式。动词路径会让版本升级、权限控制、缓存策略变复杂——比如 /getActiveUsers 和 /searchUsers 看似不同其实都是对 users 的查询只是参数不同复数形式是约定俗成即使单个资源也用 /users/123不是 /user/123Go 生态如 Gin、Echo的路由匹配和中间件设计都默认按此假设嵌套资源要克制/users/123/posts 合理但 /users/123/posts/456/comments/789/likes 就该拆或加聚合接口HTTP 方法语义必须严格对应操作类型别因为“方便”就全用 GET 或全用 POST。Go 里 http.ServeMux 或框架路由不校验语义但客户端、网关、缓存、审计日志全依赖它。GET /users只读可缓存无副作用带敏感参数如 token别塞进 query改用 Authorization headerPOST /users创建新资源成功返回 201 Created Location header 指向新地址PATCH /users/123局部更新别用 PUT 做全量替换——除非你真能保证客户端发来的是完整最新状态DELETE /users/123幂等删完再删一次仍是 204 No Content不是 404查询参数命名统一用小写下划线避免驼峰Go 标准库 url.ParseQuery 和常用 ORM如 GORM默认按原样解析 query string而 JSON 序列化常走 json:user_id 这种 tag。混用驼峰会导致前端传 userId123后端收不到或误判为零值。分页统一用 page 和 per_page不是 pageSize 或 limit便于中间件统一封装过滤字段名应与数据库列名一致status、created_after而不是 userStatus 或 createdAtGt排序用 sort 参数值为 name 或 -email负号表降序别搞 orderdescfieldemail 这种两段式错误响应结构必须固定别让前端猜状态码含义很多 Go 项目用 map[string]interface{} 返回错误结果前端要写一堆 if res.err ! nil switch res.status实际根本没统一格式。 文心快码 文心快码Comate是百度推出的一款AI辅助编程工具