前言:

最近一段时间,一直在低头敲代码,开发平台对外交互的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. SQL联结笔记(内联结,自联结,自然联结,外联结区别以及应用)

    SQL中有三种联结,分别是:内联结,自然联结,外联结. 联结是针对不同表联合起来的一种方式.应用的对象是:表(table) 为了方便验证练习理解,首先展示所要用到的表的内容: 1.Customers表 ...

  2. kali安装open-vm-tools实现虚拟机交互

    普通的VMware tools 弱爆了 安装具有复制粘贴功能的open-vm-tools.servic: 切记:如果之前已经安装了VMware tools,一定要删除:vmware-uninstall ...

  3. (转载)std::enable_if 的几种用法 c++11

    今天看confluo源码中看到了std::enable_if这一个我不了解的语法,所以记录下来 转载地址:https://yixinglu.gitlab.io/enable_if.html std:: ...

  4. 超级码力编程赛带着6万奖金和1200件T恤向你跑来了~

    炎炎夏日,总是感觉很疲劳,提不起一点精神怎么办?是时候参加一场比赛来唤醒你的激情了!阿里云超级码力在线编程大赛震撼携手全国数百所高校震撼来袭. 它来了,它来了,它带着60000现金和1200件T恤向你 ...

  5. 大牛浅谈Web测试基于实际测试的功能测试点总结

    今天跟大家讲解的是web测试在实际测试的功能测试点的一些小总结,希望对你们有帮助,有说的不好的地方,还请多多指教! 一.页面链接检查:测试每一个链接是否都有对应的页面,并且页面之前可以正确切换.   ...

  6. 记一些Python(Pymysql)建表、增删改查等基础操作(小白适用)

    1.读取sql文件创建数据表 有一个形如下图的sql文件,使用python读取文件并在数据库中创建所有的表. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道 ...

  7. windows版redis报错:本地计算机上的Redis服务启动后停止

    解决 1.如果需要临时启动Redis 使用命令:redis-server.exe   redis.windows.conf   --maxheap 200m 说明:200m是指定最大堆内存是200m, ...

  8. Codeforces1312E Array Shrinking 区间DP

    题意 给你一个数组\(a\),只要满足\(a_i=a_{i+1}\)就可以将这两个元素合并成一个值为\(a_i+1\)的元素,问数组最小长度. 解题思路 记得之前某场的F和这题差不多,当时好像是相邻且 ...

  9. SSM框架之mybatis极速入门!

  10. 在Oracle中快速创建一张百万级别的表,一张十万级别的表 并修改两表中1%的数据 全部运行时间66秒

    万以下小表做性能优化没有多大意义,因此我需要创建大表: 创建大表有三种方法,一种是insert into table selec..connect by.的方式,它最快但是数据要么是连续值,要么是随机 ...