接口怎么命名 - youngperson/study-100 GitHub Wiki

接口怎么取名字

一个好的接口名字很重要,别人一看就知道是要做什么事情

准守restful的规范,会事半功倍,让一个资源可以被识别,URL可以看成就是资源的地址,给接口取名字就是给项目中的功能取合理的名词,然后对调用方暴露

取名字中的一些规范

  • 使用_或者-让URL的可读性更好点

多个单词组成的名字,名字直接可以用_或-隔开。比如http://xxxxx/news/38119/oschina-translate-reward-plan

  • 使用/来表示资源的层级关系

比如 /repos/:owner/:repo/projects、 /orgs/:org/projects

  • 使用?用来过滤

大多数人把?就是当做参数传递用,很容易造成URI变得复杂、不好理解。

?用于对资源的过滤(通常对应的是一些特定条件的查询结果或算法运算结果)

  • 使用,或者;表示同级资源的关系

比如是批量查询,传入的数据之间用,或者;分割

gitlab接口的例子

  • GET

/events (公共的资源)

/repos/:owner/:repo/events (某些层级下的资源)

/repos/:owner/:repo/issues/events

/feeds

/notifications

/repos/:owner/:repo/notifications

/repos/:owner/:repo/check-runs/:check_run_id

/repos/:owner/:repo/check-runs/:check_run_id/annotations (资源下面还有子类资源,可以继续往下分)

/gists/starred (资源列表,可以用?去搜索/往下加层级)

/gists/:gist_id/commits

/search/projects (?q 搜索条件 sort用来排序的字段 order: asc/desc,sort字段是升序还是降序)

  • POST

/repos/:owner/:repo/check-runs

/user/migrations

  • PATCH

/repos/:owner/:repo/check-runs/:check_run_id

/gists/:gist_id

  • DELETE

/gists/:gist_id

/gists/:gist_id/star

小结

  • 资源名词用复数形式(加s)
  • GET方式表示获取列表/单个(select),获取列表的参数用?去传递
  • POST方式表示添加数据(insert),参数传递可以采用json
  • DELETE方式表示删除数据(update),参数传递可以采用json
  • PATCH方式用来更新数据(update),参数传递可以采用json

  • 项目中的功能做好拆分,拆分出一个个的资源名词出来
  • 接口的名字不要对外暴露任何的实现细节部分,多要资源名词去命名
  • URI命名:域名/service-name/(资源)版本号/资源(属于上一级资源的子类)
  • 项目中搜索相关的全部放到 域名/service-name/search/下面
  • 项目中通知相关的全部放到 域名/service-name/notifications/下面

参考文章