一、Rest架构的主要原则:

1、网络上的所有事物都被抽象为资源
2、每个资源都有一个唯一的资源标识符
3、同一个资源具有多种表现形式(xml,json等)
4、对资源的各种操作不会改变资源标识符
5、所有的操作都是无状态的

二、为什么会有restful接口

在Restful之前的操作:
http://127.0.0.1/user/query/1 GET 根据用户id查询用户数据
http://127.0.0.1/user/save POST 新增用户
http://127.0.0.1/user/update POST 修改用户信息
http://127.0.0.1/user/delete/1 GET/POST 删除用户信息

RESTful用法:
http://127.0.0.1/user/1 GET 根据用户id查询用户数据
http://127.0.0.1/user POST 新增用户
http://127.0.0.1/user PUT 修改用户信息
http://127.0.0.1/user DELETE 删除用户信息

之前的操作是没有问题的,大神认为是有问题的,有什么问题呢?你每次请求的接口或者地址,都在做描述,例如查询的时候用了query,新增的时候用了save,其实完全没有这个必要,我使用了get请求,就是查询.使用post请求,就是新增的请求,我的意图很明显,完全没有必要做描述,这就是为什么有了restful.

三、实际开发中常见的规范如下:

1、网址中不能有动词,只能有名词,API 中的名词也应该使用复数。 因为 REST 中的资源往往和数据库中的表对应,而数据库中的表都是同种记录的"集合"(collection)。如果 API 调用并不涉及资源(如计算,翻译等操作)的话,可以用动词。 比如:GET /calculate?param1=11&param2=33
2、不用大写字母,建议用中杠 - 不用下杠 _ 比如邀请码写成 invitation-code而不是 invitation_code

接口尽量使用名词,禁止使用动词。 下面是一些例子:
GET /classes:列出所有班级
POST /classes:新建一个班级
GET /classes/classId:获取某个指定班级的信息
PUT /classes/classId:更新某个指定班级的信息(一般倾向整体更新)
PATCH /classes/classId:更新某个指定班级的信息(一般倾向部分更新)
DELETE /classes/classId:删除某个班级
GET /classes/classId/teachers:列出某个指定班级的所有老师的信息
GET /classes/classId/students:列出某个指定班级的所有学生的信息
DELETE classes/classId/teachers/ID:删除某个指定班级下的指定的老师的信息
反例:
/getAllclasses
/createNewclass
/deleteAllActiveclasses
理清资源的层次结构,比如业务针对的范围是学校,那么学校会是一级资源:/schools,老师: /schools/teachers,学生: /schools/students 就是二级资源。

四 API接口设计六要素

https://segmentfault.com/a/1190000023874343
https://www.jianshu.com/p/7893169a7c93

RESTful接口详解相关推荐

  1. Java6.0中Comparable接口与Comparator接口详解

    Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...

  2. 【java8新特性】——lambda表达式与函数式接口详解(一)

    一.简介 java8于2014年发布,相比于java7,java8新增了非常多的特性,如lambda表达式.函数式接口.方法引用.默认方法.新工具(编译工具).Stream API.Date Time ...

  3. html5硬件接口,HTML5通用接口详解

    1.先说几个基本类型: DOMString, boolean, long, unsigned long, double,BmBHTML5中文学习网 - HTML5先行者学习网 NaN(Not-a-Nu ...

  4. Spring使用IOC容器创建对象及ClassPathXmlApplicationContext与FileSystemXmlApplicationContext接口详解

    IOC容器创建对象及接口详解 引言 类的建立 配置文件 IOC创建对象 运行结果 接口详解 (1)接口一`ClassPathXmlApplicationContext` (2)接口二:`FileSys ...

  5. 微信小程序和百度的语音识别接口详解

    介绍 因为项目需要,使用到了微信小程序和百度的语音接口 现在将项目中的一个小模块拿出来单独分享. 技术关键字 微微信小程序 百度语音接口 nodejs,express fluent-ffmegp 环境 ...

  6. RandomAccess接口详解

    RandomAccess接口详解 Interface RandomAccess All Known Implementing Classes: ArrayList, AttributeList, Co ...

  7. 【JavaWeb】Servlet系列——HttpServletRequest接口详解

    文章目录 23 HttpServletRequest接口详解 23.1 关于HttpServletRequest接口 23.2 HttpServletRequest接口的实现类谁写的? HttpSer ...

  8. 接口详解(JAVA)

    接口详解(JAVA) 文章目录 接口详解(JAVA) 接口 接口的定义和使用 练习 接口的细节:成员特点和接口的各种关系 接口中成员的特点 接口和类之间的关系 接口中新增方法,接口应用和适配器设计模式 ...

  9. GB28181平台对接接口详解

    28181平台对接接口详解 信令接口: 1.1 平台注册 下级平台主动向上级平台注册: 注册鉴权信息(用户名和密码)由上级提供: 举例说明: 下级--->上级 REGISTER sip:6201 ...

最新文章

  1. tomcat的startup.bat闪退问题解决
  2. Science:基于微生物条形码系统的高分辨率物源追踪技术
  3. python 3.0内置函数map、filter
  4. 区块链BaaS云服务(24)秘猿科技CITA
  5. 手机端适应_不轻易透露的超强技巧!详解iVX中怎样做设备自适应
  6. 【转】如何用Maven创建web项目(具体步骤)
  7. STL中vectortype的复制
  8. 深度 | 带领国产数据库走向世界,POLARDB底层逻辑是什么?
  9. LeetCode Word Abbreviation
  10. Docker(24)- docker login 命令详解
  11. html input禁止驶入,layui form表单 input输入框获取焦点后 阻止Enter回车自动提交 – 执念 – 博客园...
  12. Linux系统中的kill -0有什么作用?
  13. mk突变点检测_气候突变检测
  14. linux编译运行uart,Kindle4: 编译并运行upstream linux kernel – v4.4
  15. python第三章练习题
  16. Within-sample variability-invariant loss for robust speaker recognition under noisy environments
  17. houdini 蜘蛛网
  18. Magicodes.IE 2.2发布
  19. linux支持pci-e硬盘吗,Linux下基于PCI-E接口的固态硬盘驱动设计与实现
  20. 回忆童年游戏,完美利用Python制作飞机大战(爷青回~)

热门文章

  1. 基于SSM的婚纱摄影业务管理网站
  2. Scratch基础(三):小猫顶金币
  3. JAVA后端需要会js吗_Java后端需要掌握的JS-------BOM
  4. 第三方IM及时通讯对比
  5. 来,抱一抱来,背背[图]
  6. 基于pyecharts Geo BMAP 的地图可视化
  7. 磨刀霍霍向Gamer 老黄发布英伟达甜点级显卡RTX 2060...
  8. kylin focal fossa ubuntu20.04安装 cuda cudnn lib
  9. CSS3轮回写轮眼制作
  10. 用html加div餐厅网页代码,餐厅界面.html