简单说说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引 ...
随机推荐
- On the Convergence of FedAvg on Non-IID Data
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:1907.02189v2 [stat.ML] 8 Oct 2019 Abstract 联邦学习使得大量的边缘计算设备在不共享数 ...
- Flying Pages:在单击之前预加载页面,打开网页快得飞起
Flying Pages能够实现:在用户点击网页的链接之前,就预加载这个网页,当再点击这个网页时,页面便能飞速打开,能为网站优化加分.接下来,就由LOYSEO来讲解Flying Pages的使用方法. ...
- 阿里巴巴Java开发手册1.4.0
链接:https://pan.baidu.com/s/16kKzcRcu20SMDdydMm9ZUw 提取码:p9ef
- 力扣Leetcode 560. 和为K的子数组
和为K的子数组 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数. 示例 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1 ...
- 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数
最大数 力扣 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说 ...
- Python开发的入门教程(八)-迭代
介绍 本文主要介绍Python中迭代的基本知识和使用 什么是迭代 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Ite ...
- 4-6年经验左右、优秀的 Java 程序员应该具备的技能
4-6年经验左右.优秀的 Java 程序员应该具备的技能有哪些,按“专业技能”和“项目”两块,包括但不限于以下内容. 专业节能方面 基础:JDK 常用类的原理.源码.使用场景. 设计模式:常用几种的原 ...
- 浅析一个lua文件窥slua工作机制
slua的东西不是几句话能讲得完,这里只说结论不说原因,原因有空写个Little Slua工程来解释,下面注释中有几个关键点:LuaVar系列类:LuaFunction,LuaTable,LuaDel ...
- 漏洞重温之sql注入(七)
漏洞重温之sql注入(七) sqli-labs通关之旅 Less-31 首先,进入31关,我们先添加上id参数. 然后,我们查看源码. 我们门可以看到,index页面源码其实很简单,网页也没有对我们的 ...
- Springboot-Mybatis-进阶
目录 数据库关系 ResultMap association collection 动态sql if where set choose foreach 缓存 一级缓存 二级缓存 开启二级缓存 配置 异 ...