imeay/blog

restful api 设计

imeay opened this issue · 0 comments

imeay commented

说在前头

有时候,一个接口的定义,给一个变量,一个方法命名,都会让你花掉大半天的时间。今天就说下接口定义,在通读一些文章后,记录一下。

restful api

发挥 HTTP 动词的作用

get, post, put,patch,delete 从字面意义上看,本身就代表了一种行为

让动词在路径中消失

本身uri代表的就是一种资源,结合HTTP动词,我们可以实现对这些资源的调配

假设我要写篇小说

小说 fanfic 章节 section, 其实我觉得可以有更好的名词来表示这两个

小说信息

  • 创建小说
    POST /fanfics
    
  • 删除主键id为1的小说
    DELETE /fanfics/1
    
  • 更新主键id为1的小说信息(比如标题,类别)
    PUT /fanfics/1
    
  • 获取主键id为1
    GET /fanfics/1
    
  • 获取所有小说
    GET /fanfics
    

可以看到,HTTP 动词 和 fanfics 两个关键字的结合,可以实现对资源的调配了。

小说还有章节的

给第一篇小说创建章节

  • 创建小说id为1的章节
    POST /fanfics/1/sections
    
  • 删除小说id为1,章节id为1的小说
    DELETE /fanfics/1/sections/1
    
  • 更新小说id为1,章节id为1的小说
    PUT /fanfics/1/sections/1
    

等等,会发现,定义接口再也不会那么难了

说在结尾

不管是怎样的设计,一个接口的定义都应该让人清楚的知道它在做什么,但又足够简洁,这样子就可以了。