RESTful API 应使用复数名词路径(如 /users)、避免动词和查询参数承载资源语义,用 HTTP 方法表达操作,版本置于 URL 路径(如 /v1/users),并选用支持路径参数校验的路由器。URL路径里别用动词,用名词表达资源RESTful 的核心是把 API 当作对资源的操作,不是对动作的调用。比如 /users/123/send_email 是错的——send_email 是动词,暴露了实现细节,也违背了 HTTP 方法语义。正确做法是把“发邮件”变成对子资源或关联行为的描述,例如用 /users/123/emails 配合 POST 请求表示“创建一封新邮件”。常见错误现象:/api/v1/getUser?id=123 或 /updateProfile —— 这类 URL 本质是 RPC 风格,难以缓存、版本混乱、HTTP 方法被架空。所有顶层路径必须是复数名词:/users、/orders、/products,不写 /user嵌套资源用斜杠自然表达层级:/users/123/posts/456 表示用户 123 的第 456 篇帖子避免查询参数承载资源语义:/users?role=admin 可以,但 /users/admin 就模糊了资源边界(除非明确设计为角色集合)用 HTTP 方法决定操作语义,不是靠 URL 后缀很多人习惯加 .json 或 ?format=json 来指定返回格式,这是过时做法。Golang 的 net/http 或 gin/echo 完全可以通过 Accept 请求头和状态码来区分响应行为,URL 应保持干净。典型误用:/users/123.json、/deleteUser/123、/users/123?_method=DELETE —— 这些都让路由逻辑和业务耦合,也破坏幂等性判断。立即学习“go语言免费学习笔记(深入)”;GET /users:列出全部;GET /users/123:获取单个POST /users:创建新用户(不要用 PUT /users/123 创建,除非你确定 ID 由客户端生成)PATCH /users/123:局部更新(PUT 适合全量替换,但实践中容易误覆盖字段)DELETE /users/123:删除,成功返回 204 No Content,不是 200 OK + JSON版本控制放在 URL 路径里,别塞请求头或参数Golang 服务部署后,API 演进不可避免。用请求头(如 Accept: application/vnd.myapi.v2+json)做版本控制看似优雅,但调试难、日志难追踪、反向代理或 CDN 往往不透传自定义头。路径版本最直接可靠。 Felvin AI无代码市场,只需一个提示快速构建应用程序

更多推荐