路由与端点Route & Endpoint
你可能会说
用户访问不同的网址,怎么让不同的代码来接管?
路由决定访问一个网址或执行一种操作时,应交给后端的哪段功能处理。例如打开文章列表和提交一篇新文章,会交给两段不同功能处理。每个对外入口都要写清需要提供什么、成功后返回什么、失败时怎样说明。
也常被叫作路由EndpointAPI Endpoint接口端点
什么时候用
- 用方法 + 名词路径表达意图:GET /users、POST /users方法说明动作,路径说明对象读取用户GET /users创建用户POST /users
- 把路径参数、查询参数和请求体分清楚三种参数放在不同位置路径/users/42查询?tab=orders请求体{ "name": "小林" }
- 每条端点写清输入、成功响应、错误状态和权限要求一条端点要写清四件事输入email成功201失败400 / 409权限需登录
- 先用浏览器 Network、curl 或 API 工具单独验证端点先单独验证接口curl -X POST /api/orders201 Created{ "orderId": "o_42" }
什么时候不用
- 不要把所有功能放进一个含义不清的通用端点一个端点包办一切POST /api/doEverything{ "action": "maybe-save-or-delete" }端点名称无法清楚表达其读取、修改或删除行为
- 读取数据却用 POST、删除数据却用 GET:会偏离 HTTP 语义,也可能影响缓存和安全预期方法和动作相反删除GET /delete/42读取POST /getUser
- 只设计成功响应:参数缺失、冲突和服务失败时也应返回约定的状态与错误信息只设计成功分支200 成功→500 失败→缺少恢复提示参数缺失和服务失败也应有明确响应
- 把密码、令牌等敏感信息放在 URL 查询参数里:它们可能进入浏览历史和访问日志敏感信息出现在网址里GET /report?api_key=sk-live-••••浏览历史 · 访问日志 · 分享截图
组成结构 · Anatomy
GET/api/posts?page=2
GET 读取、POST 创建、PATCH 修改、DELETE 删除
资源地址,最好使用名词并保持复数规则一致
用于筛选、搜索、排序和分页,不应该包含密码或令牌
典型使用场景
GET /api/posts 取列表
文章列表GET /api/posts
请求参数?page=2&tag=design
→
响应200 · 20 篇文章
POST /api/login 提交登录
提交登录POST /api/login
登录
请求体携带账号信息,成功后建立会话
GET /api/users/:id 取详情
用户详情GET /api/users/:id
路径参数id = u_23姓名林小狐角色editor
DELETE /api/tasks/:id 删除任务
删除任务DELETE /api/tasks/:id
任务整理首页文案删除后按产品策略处理
确认删除先确认,再请求 DELETE /api/tasks/t_42
延伸阅读 · 权威出处