RESTful接口详解
一、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¶m2=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接口详解相关推荐
- Java6.0中Comparable接口与Comparator接口详解
Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...
- 【java8新特性】——lambda表达式与函数式接口详解(一)
一.简介 java8于2014年发布,相比于java7,java8新增了非常多的特性,如lambda表达式.函数式接口.方法引用.默认方法.新工具(编译工具).Stream API.Date Time ...
- html5硬件接口,HTML5通用接口详解
1.先说几个基本类型: DOMString, boolean, long, unsigned long, double,BmBHTML5中文学习网 - HTML5先行者学习网 NaN(Not-a-Nu ...
- Spring使用IOC容器创建对象及ClassPathXmlApplicationContext与FileSystemXmlApplicationContext接口详解
IOC容器创建对象及接口详解 引言 类的建立 配置文件 IOC创建对象 运行结果 接口详解 (1)接口一`ClassPathXmlApplicationContext` (2)接口二:`FileSys ...
- 微信小程序和百度的语音识别接口详解
介绍 因为项目需要,使用到了微信小程序和百度的语音接口 现在将项目中的一个小模块拿出来单独分享. 技术关键字 微微信小程序 百度语音接口 nodejs,express fluent-ffmegp 环境 ...
- RandomAccess接口详解
RandomAccess接口详解 Interface RandomAccess All Known Implementing Classes: ArrayList, AttributeList, Co ...
- 【JavaWeb】Servlet系列——HttpServletRequest接口详解
文章目录 23 HttpServletRequest接口详解 23.1 关于HttpServletRequest接口 23.2 HttpServletRequest接口的实现类谁写的? HttpSer ...
- 接口详解(JAVA)
接口详解(JAVA) 文章目录 接口详解(JAVA) 接口 接口的定义和使用 练习 接口的细节:成员特点和接口的各种关系 接口中成员的特点 接口和类之间的关系 接口中新增方法,接口应用和适配器设计模式 ...
- GB28181平台对接接口详解
28181平台对接接口详解 信令接口: 1.1 平台注册 下级平台主动向上级平台注册: 注册鉴权信息(用户名和密码)由上级提供: 举例说明: 下级--->上级 REGISTER sip:6201 ...
最新文章
- tomcat的startup.bat闪退问题解决
- Science:基于微生物条形码系统的高分辨率物源追踪技术
- python 3.0内置函数map、filter
- 区块链BaaS云服务(24)秘猿科技CITA
- 手机端适应_不轻易透露的超强技巧!详解iVX中怎样做设备自适应
- 【转】如何用Maven创建web项目(具体步骤)
- STL中vectortype的复制
- 深度 | 带领国产数据库走向世界,POLARDB底层逻辑是什么?
- LeetCode Word Abbreviation
- Docker(24)- docker login 命令详解
- html input禁止驶入,layui form表单 input输入框获取焦点后 阻止Enter回车自动提交 – 执念 – 博客园...
- Linux系统中的kill -0有什么作用?
- mk突变点检测_气候突变检测
- linux编译运行uart,Kindle4: 编译并运行upstream linux kernel – v4.4
- python第三章练习题
- Within-sample variability-invariant loss for robust speaker recognition under noisy environments
- houdini 蜘蛛网
- Magicodes.IE 2.2发布
- linux支持pci-e硬盘吗,Linux下基于PCI-E接口的固态硬盘驱动设计与实现
- 回忆童年游戏,完美利用Python制作飞机大战(爷青回~)
热门文章
- 基于SSM的婚纱摄影业务管理网站
- Scratch基础(三):小猫顶金币
- JAVA后端需要会js吗_Java后端需要掌握的JS-------BOM
- 第三方IM及时通讯对比
- 来,抱一抱来,背背[图]
- 基于pyecharts Geo BMAP 的地图可视化
- 磨刀霍霍向Gamer 老黄发布英伟达甜点级显卡RTX 2060...
- kylin focal fossa ubuntu20.04安装 cuda cudnn lib
- CSS3轮回写轮眼制作
- 用html加div餐厅网页代码,餐厅界面.html