文章目录

  • 基础
  • api设计基本思路
  • 举例:(axios)
  • 新增一个title为“abc”的item
  • 删除id为5的item
  • 把id为5的item的title修改为"bbb"
  • 把id为5的item修改{title:"bbb",content:"xxx"}
  • 获取id小于10000中前100个item(字段需要自己设置)
  • 登录、登出,注册,注销
  • HTTP报头(暂略)
  • HTTP状态码(部分)


基础

1.最好要带有版本(设置在url中或者header中)
2.网址里不能有动词
3.所有的接口的功能都用“都某个资源的某个操作”描述。
4.资源表现在url中
5.操作使用HTTP动词(patch,put,post,delete)来描述
6.设置统一的返回值格式和HTTP状态码。

api设计基本思路

1.把接口的功能转化成对“某个资源”的“某个操作”。
2.把资源暴露在url中。通过路径嵌套精准定位到目标资源
3.把操作用http动词来表示(增post删delete改path,put查get)
4.需要对返回数据限制(数量,排序等),加在query中
5.加上版本号

举例:(axios)

新增一个title为“abc”的item
=》资源为item,操作是增加
 =》资源路径为…/item,请求为post
 =》版本为v1
 =》axios.post(’…/v1/item’,{title:‘abc’})删除id为5的item
=》资源为id是5的item,操作是删除
 =》资源路径是…/item/5,请求选择delete
 =》版本为v1
 =》axios.delete(’…/v1/item/5’)把id为5的item的title修改为"bbb"
(item有title和content两个属性)
 =》资源为id是5的item,操作是部分修改
 =》资源路径是…/item/5,请求选择patch
 =》版本为v1
 =》axios.patch(’…/v1/item/5’,{title:‘bbb’})把id为5的item修改{title:“bbb”,content:“xxx”}
(item有title和content两个属性)
 =》资源为id是5的item,操作是全部修改
 =》资源路径是…/item/5,请求选择put
 =》版本为v1
 =》axios.put(’…/v1/item/5’,{title:“bbb”,content:“xxx”})获取id小于10000中前100个item(字段需要自己设置)
=》资源为的item,操作是获取
 =》资源路径是…/item,请求选择get
 =》版本为v1
 =》axios.get(’…/v1/item’,params:{
 max_id:10000,
 limit:100
 })登录、登出,注册,注销
根据restful原则,无法使用login之类的动词,所以得修改这些接口的路径。
 方法:把token或者session视作资源,登录登出视作对它的操作。同样的,把user视作资源,注册、注销和修改用户信息视作对其的操作举例
 登录:axios.post(’…/token’,header:{token:xxx})
 登出:axios.delete(’…/token’,header:{token:xxx})
 注册:axios.post(’…/user’,{username:‘abc’,password:‘abc’})
 注销:axios.delete(’…/user’,{username:‘abc’})
 修改用户信息:HTTP报头(暂略)
HTTP状态码(部分)
200 成功
 400 请求格式不对
 500 出错