简单说说Restful API
前言:
最近一段时间,一直在低头敲代码,开发平台对外交互的API接口,功能已经大体完成了,回过头来看看自己的接口设计文档,不胜感慨,想当初自己也是为“接口名称”想破了脑袋,各种百度英文。今天一位老同事走过来看了一眼,随口说了一句,你这接口一点Restful风格没有。。。看一眼你的接口命名规则就知道,我只能点点头,也是。
之前也有接触过REST接口设计风格,时间长了,终究还是都还回去了。今天也是准备把这块知识点拾掇起来,再重新认识一下,感兴趣的同学可以一起来了解了解。
正文:
先简单说说什么是Restful API
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。
RESTFUL是一种架构风格,定义了一组规则和约束,符合REST风格的API接口称作为Restful
API。
REST(Representational
State Transfer)中文翻译过来可以理解为“表现层状态转化”
主要特点:
1.资源
REST全称是表现层状态转化,那究竟指的是什么的表现? 其实指的就是资源,现实网络中各种各样信息的传递,交互,我们可以将这些信息抽象为资源,比如一张图片,一段文本,一个文件等。
在网络中我们使用“统一资源标识”即URI(Uniform Resource Identifier)来标识一个资源,类似于给你一张身份证,大家根据身份证就能知道你是谁。
REST风格可以说是“面向资源”的,它请求的是一个资源,该资源往往用一个名词表示,不会出现动词(也是区别于RPC风格的一点)。
2.表现层
REST全称是表现层状态转化,既然是面向资源,为什么不叫“资源状态转化”呢?
我们会发现往往在网络中交互的都是xml,json,html等格式数据,这些格式可以理解为资源对外表现的一种形式,这也就说明了实际上网络中交互的是“资源的表现”,并不只是单纯的资源本身。
3.状态的转化
现实网络中,往往是客户端发起一个请求,服务端进行相应的回应。在这个过程中,势必涉及到数据和状态的变化。而互联网通信协议HTTP,是一个无状态协议。这也就意味着,资源的状态都保存在服务器端。由客户端发起POST,PUT等操作,引起服务端对资源进行操作,发生“状态的转化”。
4.资源的链接(超媒体概念)
资源的链接可以理解为从一个资源跳转到另一个资源
实际应用中我们发起对一个接口的请求,接口会返回一些数据,这些数据可能除了图片,json字符串等,有时候还会包含一个地址,这个地址往往是对下一个资源请求的地址。
5.HTTP动词
GET-查询 安全,幂等性
POST-新增或者更新 非安全,非幂等性
PUT(客户端提供改变后的完整资源)-更新 非安全,幂等性
PATCH(客户端提供改变的属性)-更新 非安全,幂等性
DELETE-删除 非安全,幂等性
安全性:操作不会改变资源的状态
幂等性:操作一次和操作N次,对资源改变的效果是一样的。
小结
综合上面的解释,我们总结一下什么是RESTful架构:
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
经过上面的了解,回过头来再看看我之前设计的接口URL,比如:htpp://localhost/Person/GetAll。真是被老同事一语中的哇。。。
前言:
最近一段时间,一直在低头敲代码,开发平台对外交互的API接口,功能已经大体完成了,回过头来看看自己的接口设计文档,不胜感慨,想当初自己也是为“接口名称”想破了脑袋,各种百度英文。今天一位老同事走过来看了一眼,随口说了一句,你这接口一点Restful风格没有。。。看一眼你的接口命名规则就知道,我只能点点头,也是。
之前也有接触过REST接口设计风格,时间长了,终究还是都还回去了。今天也是准备把这块知识点拾掇起来,再重新认识一下,感兴趣的同学可以一起来了解了解。
正文:
先简单说说什么是Restful API
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。
RESTFUL是一种架构风格,定义了一组规则和约束,符合REST风格的API接口称作为Restful
API。
REST(Representational
State Transfer)中文翻译过来可以理解为“表现层状态转化”
主要特点:
1.资源
REST全称是表现层状态转化,那究竟指的是什么的表现? 其实指的就是资源,现实网络中各种各样信息的传递,交互,我们可以将这些信息抽象为资源,比如一张图片,一段文本,一个文件等。
在网络中我们使用“统一资源标识”即URI(Uniform Resource Identifier)来标识一个资源,类似于给你一张身份证,大家根据身份证就能知道你是谁。
REST风格可以说是“面向资源”的,它请求的是一个资源,该资源往往用一个名词表示,不会出现动词(也是区别于RPC风格的一点)。
2.表现层
REST全称是表现层状态转化,既然是面向资源,为什么不叫“资源状态转化”呢?
我们会发现往往在网络中交互的都是xml,json,html等格式数据,这些格式可以理解为资源对外表现的一种形式,这也就说明了实际上网络中交互的是“资源的表现”,并不只是单纯的资源本身。
3.状态的转化
现实网络中,往往是客户端发起一个请求,服务端进行相应的回应。在这个过程中,势必涉及到数据和状态的变化。而互联网通信协议HTTP,是一个无状态协议。这也就意味着,资源的状态都保存在服务器端。由客户端发起POST,PUT等操作,引起服务端对资源进行操作,发生“状态的转化”。
4.资源的链接(超媒体概念)
资源的链接可以理解为从一个资源跳转到另一个资源
实际应用中我们发起对一个接口的请求,接口会返回一些数据,这些数据可能除了图片,json字符串等,有时候还会包含一个地址,这个地址往往是对下一个资源请求的地址。
5.HTTP动词
GET-查询 安全,幂等性
POST-新增或者更新 非安全,非幂等性
PUT(客户端提供改变后的完整资源)-更新 非安全,幂等性
PATCH(客户端提供改变的属性)-更新 非安全,幂等性
DELETE-删除 非安全,幂等性
安全性:操作不会改变资源的状态
幂等性:操作一次和操作N次,对资源改变的效果是一样的。
小结
综合上面的解释,我们总结一下什么是RESTful架构:
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
经过上面的了解,回过头来再看看我之前设计的接口URL,比如:htpp://localhost/Person/GetAll。真是被老同事一语中的哇。。。
简单说说Restful API的更多相关文章
- Java框架spring Boot学习笔记(九):一个简单的RESTful API
RESTful API设计需求如下: User.java package com.springboot.test; public class User { private Long id; priva ...
- laravel 实现一个简单的 RESTful API
创建一个 Article 资源 php artisan make:resource Article 你可以在 app/Http/Resources 目录下看到你刚刚生成的 Article 资源 当然我 ...
- 基础项目构建,引入web模块,完成一个简单的RESTful API 转载来自翟永超
简介 在您第一次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复粘贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot ...
- springBoot01-helloworld-完成一个简单的RESTful API
1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本 2.0.1,以及一些工程基本信息 ,最后点击Generate Proje ...
- 一、基础项目构建,引入web模块,完成一个简单的RESTful API
一.Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web项目 没有冗余代码生成和XML配置的要求 二.使用maven构 ...
- 基于轻量型Web服务器Raspkate的RESTful API的实现
在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RESTful API. 模块 首先让我们了解一下"模块&quo ...
- Yii2框架RESTful API教程(一) - 快速入门
前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RE ...
- Web服务器Raspkate的RESTful API
基于轻量型Web服务器Raspkate的RESTful API的实现 在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RE ...
- 第四篇:用IntelliJ IDEA 搭建基于jersey的RESTful api
编译器:Intellij IDEA 系统环境: MAC OS 相关技术:Maven.tomcat 7.jdk8 1.创建项目 首先创建一个web Application项目(这里我们打算用maven引 ...
随机推荐
- 团队作业4:第二篇Scrum冲刺博客(歪瑞古德小队)
目录 一.Daily Scrum Meeting 1.1 会议照片 1.2 项目进展 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3.2 Code Review 记录 3.3 issue ...
- Arduboy基本操作(二)
Arduboy基本操作(二) 方向键控制物体移动 #include<Arduboy.h> Arduboy arduboy; int i,j; void setup() { arduboy. ...
- MyTerm入选北极代码库计划,喜获「Arctic Code Vault Contributor」勋章
- 社区布道师揭秘消息中间件技术内幕,撰写MQ架构设计与实现原理
RocketMQ是什么 RocketMQ是由阿里捐赠给Apache的一款分布式.队列模型的开源消息中间件,经历了淘宝双十一的洗礼. RocketMQ的特性 RocketMQ基本概念 Client端 P ...
- Android开发,java开发程序员常见基础面试题,更换两个变量的值,java逻辑代码
public class abswitch{ public static void main (String args []){ //author:qq986945193 int a=1; int b ...
- eclipse 设置默认编码为Utf-8 详细教程。
需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 Window ...
- Java HashMap源码
http://blog.csdn.net/qq_27093465/article/details/52207135 http://blog.csdn.net/qq_27093465/article/d ...
- 深入了解Kafka【一】概述与基础架构
1.概述 Kafka是一个分布式的.基于发布订阅的消息系统,主要解决应用解耦.异步消息.流量削峰等问题. 2.发布订阅模型 消息生产者将消息发布到Topic中,同时有多个消息消费者订阅该消息,消费者消 ...
- HTTPS建立过程
由于HTTPS建立过程经常忘记,固记录 HTTPS建立流程 客户端发起SSL连接 服务端发送证书(证书中包含了服务端公钥) 客户端根据已有证书判断是否是可信任的(客户端决定是否继续) 服务端要求客户端 ...
- 20190925-01安装redis 000 022
1.将redis压缩包放入Linux系统有4种办法. 第一:如果安装了VMware Tools工具可以直接进行拖拽 第二:在windows中找到配置好的共享文件夹将redis压缩包放入其中,在Linu ...