什么是RESTful风格

http不仅仅是传输协议,更是一种应用协议。REST,即Representational State Transfer的缩写。意为是"表现层状态转化"。RESTful表示一种风格,理解REST前需要理解资源,何谓资源,广义的资源是指可以操作的所有对象。可能是一个系统资源,如txt、jgp、xml …,亦可以是诸如自己定义的虚拟集合的抽象,如books、usrs、times。RESTfutl代表一种简洁、方便、快捷、高效、透明的架构,这取决于你怎样组合。具有如下特点:

1、规范化接口访问方式。这些http操作方法包括GET/POST/PUT/DELETE/OPTIONS等,每个操作方法都代表一个相同意义的操作,它向所有人透明地表明操作方式。比如GET只能读取/拉数据,当然你也可以是添加数据,但建议不要这么做,不然这样就失去了REST的意义。

1) GET 读取

2) POST 添加

3) PUT 修改

4) DELETE 删除

2、资源标识唯一。通过URI表示一个资源名称,形式/resource/patch。如/users,表示用户的组合,或用户群。当然还可以继续标识某个具体的一个用户,/users/11,表示id为11的用户。当然,你也可以又用一组/usrgroup/11的URI代表操作用户组,不过不建议这么做,因为这样从字面上重复了/users/11资源表示的内容。一个资源URI总是包含第一条实现的方法:

GET /users/11

POST /users/11

PUT /users/11

DELETE /users/11

当然,仅有这些还不足以包括资源操作的所有需求,所以还可以包含请求参数,如GET /users?type=list&page=1。

3、状态的转化。这就是REST的真实含义,指它允许资源URI具有不同的表现形式。同一个URI,根据不同请求方式,执行的动作不同;还可以根据请求的Header Accept的不同返回不同的结果,如text/html、text/css、text/xml等等。也可以理解为body不同。如查询快递一般,可以上次查询,物品还在仓库,而过一段时间已经在路上了。它表示的是一个互动过程。

4、所有信息都包含在当前请求中。请求的方式包含在 Request Header的Method中,还可以包含Accept、Accept-Encoding、Accept-Language,使用Authentication、Cookie等信息表明身份。同样,服务端通过发送Content-Length、Content-Type响应执行情况。最重要的是,需要返回Status Code通知执行状态,如200 201 400 404 500等http code。REST认为,所有信息都能通过请求一次性发送,而不必再采用方式保存状态,请求的信息本身已经说明了请求的意义。

5、无状态性。这是REST最重要的特性之一,这个状态指的是客户端与服务端无需为每次保存请求状态,客户端请求不必考虑当前状态,不必考虑上下文。具体上说,就是不必使用session等工具跟踪、保存请求的特殊性。比如,无论是谁,从哪里发送,几时发送,对同一个URI资源发送请求的结果都是一样的。据传,这样的设计是为当一台服务器宕机时,另一台服务器可以无差别地响应对方的请求。客户端请求只认URI,而不需理后台的设计。

实际上,在如今执行的RESTful设计当中,完全能执行这个要求的很少,最彻底的云服务,大部份为RESTful-like的风格。

6、可实现请求缓存。通过缓存减少请求次数,在HTTP响应里利用Cache-Control、Expires、Last-Modified三个头字段,可以让浏览器缓存资源一段时间。

时间: 2024-10-12 08:04:53

什么是RESTful风格的相关文章

通过beego快速创建一个Restful风格API项目及API文档自动化(转)

通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界面. 一.创建数据库及数据表(MySQL) #db--jeedev -- ---------------------------- -- Table structure for `app` -- ---------------------------- DROP TABLE IF EXISTS `a

RESTful风格的Web服务框架:Swagger

Swagger与SpringMVC项目整合 为了方便的管理项目中API接口,在网上找了好多关于API接口管理的资料,感觉目前最流行的莫过于Swagger了,功能强大,UI界面漂亮,并且支持在线测试等等,所以本人仔细研究了下Swagger的使用,下面就如何将Swagger与个人的SpringMVC项目进行整合做详细说明: 最终API管理界面:  详细步骤: Step1:项目中引入相关jar包: <properties> <project.build.sourceEncoding>UT

Wcf体现Restful风格

Wcf体现Restful风格 概述 含状态传输(Representational State Transfer)的软件架构风格.主要特点 1.  资源是由URI来指定: 例如http://example.com/resources/ 2.  对资源的操作 包括获取.创建.修改和删除资源,这些操作正好对应HTTP协议提供的GET.POST.PUT和DELETE方法 3.  传输的资源:Web服务接受与返回的互联网媒体类型,比如:JSON,XML ,YAML 等. 下面通过一个简单的例子逐个问题解决

PHP实现RESTful风格的API实例(一)

(关于Yii2的RESTful教程请看: Yii2框架RESTful API教程) 最近看了一些关于RESTful的资料,自己动手也写了一个RESTful实例,以下是源码 目录详情: restful/ Request.php 数据操作类 Response.php 输出类 index.php 入口文件 .htaccess 重写url Request.php :包含一个Request类,即数据操作类.接收到URL的数据后,根据请求URL的方式(GET|POST|PUT|PATCH|DELETE)对数

Restful风格API接口开发springMVC篇

Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 在Restful风格中,用户请求的url使用同一个url而用请求方式:get,post,delete,put...等方式对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口. 在Restful风格中,现

restful 风格 web api规范

协议:http/https 域名 : http://api.example.com/xxx/xxx api: 标明api接口服务 xxx: 服务 xxx: 资源 版本控制: 一.使用MediaType,即在请求头header中做版本控制,数据格式等控制 想要获取的资源格式 GET /user/123456 HTTP/1.1 Accept: application/vnd.123456.user-v3+json 获取v3版userid为123456 的用户信息,返回资源格式为json 响应的文本格

springmvc restful风格操作

ssm框架 controller: package com.sgcc.controller; import java.util.ArrayList; import java.util.List; import org.omg.CORBA.PUBLIC_MEMBER; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework

在 Docker 上运行一个 RESTful 风格的微服务

tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/docker-restful-demo 实现构思 1. 使用 Maven 进行项目构建 2. 使用 Jersey 实现一个 RESTful 风格的微服务 3. 在 Docker 里面执行 mvn package 对项目打包 4. 在 Docker 容器里运行这个微服务 实现一个微服务 场景 & 需求

Web Service笔记(五):CXF开发RESTful风格的Web Service

前言: 1.Web Service笔记(五):利用CXF结合Spring开发web service 2.XML学习笔记(三):Jaxb负责xml与javaBean映射 3.jax-rs详解 4.可以使用浏览器的工具调试:如 Firefox 的RESTClient 和chrome的REST Console. 一.配置Spring的配置文件 1.需要引入新的 jar 包. 2.配置 applicationContext-server.xml 文件.使用 jaxrs:server ,记得引入jaxrs

PHP实现RESTful风格的API实例(二)

接前一篇:PHP实现RESTful风格的API实例(一) Response.php :包含一个Request类,即输出类.根据接收到的Content-Type,将Request类返回的数组拼接成对应的格式,加上header后输出 <?php /** * 输出类 */ class Response { const HTTP_VERSION = "HTTP/1.1"; //返回结果 public static function sendResponse($data) { //获取数据