表征状态转移(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。
目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。
要点及标准
需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。
应该注意区别应用的状态和连接协议的状态。REST对于连接的无状态性实际上要求每次经过无状态的连接协议传送的信息必须包含应用中所有的状态信息。
RESTful Web 服务(也称为 RESTful Web API)是一个使用HTTP并遵循REST原则的Web服务。它从以下三个方面资源进行定义:
http://example.com/resources/
。该表列出了在实现RESTful Web 服务时HTTP请求方法的典型用途。
资源 | GET | PUT | POST | DELETE |
---|---|---|---|---|
一组资源的URI,比如http://example.com/resources/ |
列出 URI,以及该资源组中每个资源的详细信息(后者可选)。 | 使用给定的一组资源替换当前整组资源。 | 在本组资源中创建/追加一个新的资源。 该操作往往返回新资源的URL。 | 删除 整组资源。 |
单个资源的URI,比如http://example.com/resources/142 |
获取 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等) | 替换/创建 指定的资源。并将其追加到相应的资源组中。 | 把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。 | 删除 指定的元素。 |
PUT 和 DELETE 方法是幂等方法。GET方法是安全方法 (不会对服务器端有修改,因此当然也是幂等的)。
不像基于SOAP的Web服务,RESTful Web服务并没有的“正式”标准[2]。 这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)。
例如,一个简单的网络商店应用,
列举所有商品,
GET http://www.store.com/products
呈现某一件商品,
GET http://www.store.com/product/12345
下单购买,
POST http://www.store.com/order <purchase-order> <item> ... </item> </purchase-order>
tomcat版本及环境Using CATALINA_BASE: /usr/local/81tomcatUsing CATALINA_HOME: /usr/local/81tomcatUsing CATALINA_TMPDIR: /usr/local/81tomcat/tempUsing JRE_HOME: /usrUsing CLASSPATH:
最近在学渗透测试这方面的知识,就默默用虚拟机安装了kali linux,因为自己是个纯新手,虽然网上有教程,但是还是感觉不够具体,以至于我自己装了大概5次才真正装成功,所以决定写一篇比较具体一点的,也算是给自己留下点纪念吧,如果能帮到和我一样是新手的人,那就更好了。1.下载kali可以在官网选择适合自己的版本下载: http://www.kali.org/downloads/ 或者,
JAVA 通过 itext,wkhtmltopdf 等,将 HTML 转成 PDF。这里通过 wkhtmltopdf 实现htmlHTML转PDFwkhtmltopdf 是一个开源的,使用Qt WebKit 渲染引擎,把 html 转换为 pdf 文件的命令行工具。wkhtmltopdf官网地址wkhtmltopdf下载下载地址:https://wkhtmltopdf.org/downloads.html根据系统选择相应的版本这里以Linux为例:版本:wkhtmltox-0.12.
环境搭建学习《OpenGL编程指南》,首先要搭建环境,运行第一个例子【第一个 OpenGL 程序 triangles.cpp】我的环境是Ubuntu14.04,以下阅读需要有linux基础知识。安装依赖库gcc g++ 安装cmake 3.19.0-rc2 源码编译安装官网https://cmake.org/download/安装命令$sudo ./bootstrap$sudo make$sudo make install安装opengl的头文件$sudo ap
刚才在安装xchm的时候,因为没有执行ldconfig命令,导致xchm在运行的时候找不到so文件,而so文件是一个动态链接库。我们必须用ldconfig来共享它。ldconfig是一个动态链接库管理命令名称: /sbin/ldconfig 配置动态连接器(ld)运行时邦定语法: /sbin/ldconfig [ -nNvXV ] [ -f ...
7-52 数组元素循环右移问题(20 分)一个数组AAA中存有NNN(&gt;0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移MMM(≥0)个位置,即将AAA中的数据由(A0A1⋯AN−1A0A1⋯AN−1A_0A_1\cdots A_{N-1})变换为(AN−M⋯AN−1A0A1⋯AN−M−1AN−M⋯AN−1A0A1⋯AN−M−1A_{N-M}\cdots A_{N-1}A_...
目录一、简介二、bulk请求三、流式bulk操作四、http工具一、简介最近Elasticsearch升级,准备从5.2.2升级到最新的7.4.2。胆子敢这么肥的一个重要的原因是因为这个业务部分的Elasticsearch集群数据量不大,不到200G。了解了一下elasticdump,最后放弃了,决定自己写代码来迁移。因为rest client高版本的和低版本的transport cli...
【源码】Spring —— PropertySource 解读前言PropertySourceEnumerablePropertySourceServletContextPropertySourceServletConfigPropertySourceMapPropertySourceSystemEnvironmentPropertySourcePropertiesPropertySourceResourcePropertySource类图总结前言property 键值对属性的抽象封装类注意跟 @Pr
POI将数据导入Excel,上传到服务器,并从客户端保存 Map recordMap = null; String key = ""; String value = ""; String sql = DBHelper.tostr(request.getParameter(
基于51单片机的八路竞赛抢答器设计
绿色版的MYSQL启动时的问题:ERROR2003 10060引发的MySql起不来。 具体情形: ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061) 或ERROR 2003 (HY000): Ca...
数据结构定义程序设计 = 数据结构 + 算法数据结构分:逻辑结构和物理结构逻辑结构:集合线性结构树形结构图形结构物理结构顺序结构: 硬盘中的存储单元是连续的,底层是数组实现的链式存储结构:硬盘中的存储单元可以不连续的, 底层是链表实现的...