REST(Representational State Transfer ),有中文翻译为"具象状态传输"(也有:“代表性状态传输”)。是由 Roy Thomas Fielding博士在2000年就读加州大学欧文分校期间在学术论文中提出的一个术语。他首次系统全面地阐述了REST的架构风格和设计思想,这篇论文是WEB发展史上一篇非常重要的技术文献,他也为WEB架构的设计与评判奠定了理论基础。他在论文中提到:“我这篇文章的写做目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,获得一个功能强、性能好、适宜通讯的架构。REST指的是一组架构约束条件和原则。” 若是一个架构符合REST的约束条件和原则,咱们就称它为RESTful架构。
如果想理解RESTful的架构风格,理解REST,首先要理解REST这个单词的组成:
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式或JSON格式进行定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
REST是设计原则和约束条件;RESTFUL是设计风格和开发方式。
接口单一且明确,在明确接口职责的条件下,尽量做到接口单一,即一个接口只做一件事,而非两件以上。
在设计接口时,应明确接口协议,根据具体情况可以采用HTTP、HTTPS或者FTP协议。
对于资源的具体操作类型,由HTTP动词表示,前五个为常用的HTTP动词,后面两个是不常用的动词(括号里是对应的SQL命令)。
命名规范:URL采用小写字母,数字,部分特殊符号(非制表符)组成
URL的前半部分,按照分级分段的方式:/项目名/模块名/API版本/方法,如:/mallx/mallx-spu/api/v1/list
项目名和模块名:不采用大小写混合的驼峰命名方式,尽量采用全小写单词,如果需要连接多个单词,则采用连接符“-”连接单词,即采用脊柱命名,如:mallx-spu。
参数命名:采用驼峰命名,如:
http://localhost:8719/metric?identity=XXX&startTime=XXXX&endTime=XXXX&maxLines=XXXX
SpringBoot - @RequestMapping/@GetMapping/@PostMapping/@PutMapping/@DeleteMapping注解使用详解
SpringBoot - @PathVariable/@RequestParam/@RequestBody注解使用详解
平级关系:参数之间不存在从属关系的就是平级关系,如:/mallx/mallx-spu/api/v1/list?page=1&size=20&state=1
从属关系:参数之间存在从属关系的,如获取某个用户的某个收货地址,则参数采用路径命名,如:/mallx/mallx-user/api/v1/user/{id}/address/{id}