Skip to main content

API 接口风格

Restful api 风格

首先还是得说一下REST 是设计风格而不是标准,也就是在写 api 接口的时候,喜欢就遵循。

常见的 CRUD 操作

POST /user/list // 获取列表
POST /user/get // 获取用户
POST /user/add // 添加用户
POST /user/edit // 编辑用户
POST /user/delete // 删除用户

与之对应 Restful Api 风格

GET / user // 获取列表
GET / user / { id } // 获取用户
POST / user // 添加用户
PUT / user / { id } // 编辑用户
DELETE / user / { id } // 删除用户

// {id} 通过后端路由 参数Params可以获取到

Restful 风格缺点

易猜测 api 接口

实际上,采用了 Restful 风格,几乎一猜就能猜到对应的 api。比如商品管理,无非就是获取商品列表,添加商品,编辑商品,删除商品。同时又传入的是对应的 ID,这要是 Mysql,ID 基本都是按顺序的,万一 api 鉴权没做好,都不知道数据怎么变动的。当然这种情况一般都是比较少见的了。

不易加密

上文不是说到为啥都要使用 POST 请求,原因也挺简单的,就是加密,GET 请求一般都不会携带过多参数,针对数据效验的话最多也就一个 MD5 效验,然而是远远不够的,而 POST 所能携带的数据不仅仅是 MD5 效验,还能携带风控算法,二次效验,浏览器指纹算法等等,能保证一定的防破解性。一些看似用 GET 请求方便的接口,但实际都要考虑所包含的风险,就如上面那个发送验证码的接口,如果不加以加密,特别容易仿造出与之对应的协议请求,再次仿造发送也不难。当然,对于这种限制类的业务,还是得要后端进行限制,例如 1 分钟只能发送一条,一天一号只能发送 10 条。