前言:

最近一段时间,一直在低头敲代码,开发平台对外交互的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的更多相关文章

  1. Java框架spring Boot学习笔记(九):一个简单的RESTful API

    RESTful API设计需求如下: User.java package com.springboot.test; public class User { private Long id; priva ...

  2. laravel 实现一个简单的 RESTful API

    创建一个 Article 资源 php artisan make:resource Article 你可以在 app/Http/Resources 目录下看到你刚刚生成的 Article 资源 当然我 ...

  3. 基础项目构建,引入web模块,完成一个简单的RESTful API 转载来自翟永超

    简介 在您第一次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复粘贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot ...

  4. springBoot01-helloworld-完成一个简单的RESTful API

    1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本 2.0.1,以及一些工程基本信息 ,最后点击Generate Proje ...

  5. 一、基础项目构建,引入web模块,完成一个简单的RESTful API

    一.Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web项目 没有冗余代码生成和XML配置的要求 二.使用maven构 ...

  6. 基于轻量型Web服务器Raspkate的RESTful API的实现

    在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RESTful API. 模块 首先让我们了解一下"模块&quo ...

  7. Yii2框架RESTful API教程(一) - 快速入门

    前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RE ...

  8. Web服务器Raspkate的RESTful API

    基于轻量型Web服务器Raspkate的RESTful API的实现 在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RE ...

  9. 第四篇:用IntelliJ IDEA 搭建基于jersey的RESTful api

    编译器:Intellij IDEA 系统环境: MAC OS 相关技术:Maven.tomcat 7.jdk8 1.创建项目 首先创建一个web Application项目(这里我们打算用maven引 ...

随机推荐

  1. 操作系统-I/O(3)SPOOLing技术

    为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入.输出技术.该技术是利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上:或者相反. 事实上,当系统中引入了多道程序技术后,完 ...

  2. 算法-图(4)用边表示活动的网络(AOE网络)Activity On Edge Network

    有向边表示活动,权值表示活动的持续时间,顶点表示事件. 只有一个开始点和完成点,称为源点.汇点,完成工程时间取决于从源点到汇点的最长路径长度,即在这条路径(关键路径)上所有活动的持续时间之和.关键路径 ...

  3. 团队作业3:需求改进&系统设计(歪瑞古德小队)

    目录 一.需求&原型改进 1.1 用户需求调查 1.2 选题需求改进 1.3 功能分析的四个象限 1.4 完善需求规格说明书 1.5 任务分解WBS调整 1.6 项目进度计划调整 二.后端架构 ...

  4. Mybatis Log plugin 破解!!!

    前言 今天重新装了IDEA2020,顺带重装了一些插件,毕竟这些插件都是习惯一直在用,其中一款就是Mybatis Log plugin,按照往常的思路,在IDEA插件市场搜索安装,艹,眼睛一瞟,竟然收 ...

  5. C# 接口的Get、Post、WebService请求方法一览,值得收藏

    C# 接口的Get.Post.WebService请求方法一览,值得收藏 public static class HttpHelper { const string DEFAULT_USER_AGEN ...

  6. 23种设计模式 - 领域问题(Interpreter)

    其他设计模式 23种设计模式(C++) 每一种都有对应理解的相关代码示例 → Git原码 ⌨ 领域问题 Interpreter 动机(Motivation) 在软件构建过程中,如果某一特定领域的问题比 ...

  7. Android Studio或者Eclipse中的最常用的快捷键,最简单的,部分不适用eclipse

    重写方法:ctrl+shift+s  然后选择Generate 构建即可: 执行程序:shift+F10 多行注释:ctrl+shift+/ 单行注释:ctrl+/ 快速打印log:logr 快速复制 ...

  8. CTF常见源码泄漏总结

    .hg源码泄漏 漏洞成因: hg init的时候会生成.hge.g.http://www.am0s.com/.hg/ 漏洞利用:工具:dvcs-ripperrip-hg.pl -v -u http:/ ...

  9. python简介以及简单代码——python学习笔记(一)

    学习来源:https://www.liaoxuefeng.com/wiki/1016959663602400 了解python 简单编写并实现python代码 命令行模式和python交互模式 了解p ...

  10. 18_Python常用的模块中的某个方法

    1.imp模块==========>重新加载已加载过的模块方法 import imp imp.reload(mymod) # 重新加载已经加载过的mymod模块 2.ctypes模块====== ...