SpringMVC(十一)Restful架构风格
2017-11-21 09:33
246 查看
什么是REST:
表述性状态转移,分布式超媒体软件的 一种架构风格
一套简单的设计原则,一种架构风格或(模式),不是一种具体的标准或架构
基于使用HTTP、URI等现有的广泛流行的协议和标准,并由几个核心抽象概念支撑。
一、资源:任何事物,只要有被引用的必要,就是一个资源(resource)。它可以是一个事物,也可以是一个抽象的概念。
二、表示:资源和表示不是一码事,web上获取的不是资源,而是资源的表示。
三、状态:在客户-服务端模式下,让客户端维护应用状态,并确保客户端向服务器发出的请求都包含理解请求所需的全部信息。
约束和风格:核心是架构以资源为核心的模型 优点:具有更好的扩展性
url表示资源
CRUD操作
状态表述转移
无状态服务
Http状态码
Cache控制
Proxy
关键原则:
1、为所有资源定义ID:
URI(统一资源定位符),URI构成了一个全局命名空间,使用URI标识的关键资源意味着它们获得了一个唯一、全局的ID。
总结:无论WEB中的资源代表单一数据项、数据项集合、虚拟或实际的对象还是计算结果等,都可以使用URI标识。
2、将所有资源链接在一起:
URI命名规格是全球标准,构成web的所有资源都可以互通通信。
总结:任何可能的情况下,使用连接指引可以被标识的资源。
3、使用标准方法
POST-Create GET-Read Put-Update DELETE-Delete
总结:为使客户端程序能与web中的的资源相互协议,资源应该正确地实现默认的应用协议(即HTTP协议),并使用协议标准的GET/PUT/POST/DELETE方法。
4、资源多重表示
总结:尽可能针对不同的需求提供资源多重表示
5、无状态通信
总结:要做到无状态通信往往需要一些重新设计-不能简单地将一些Session状态绑缚在URI上。
RESTful:符合REST约束风格和原则的应用程序或设计就是RESTfull
Spring对RESTful的支持:
@RequestMapping和@PathVariable注解,支持资源标识和URL映射
目前互联网公司越来越流行提供RESTful形式的API供第三方调用
Token认证机制:
RESTful提供的API是无状态的,即下一次调用请求与当前的调用请求时完全无关的,但这就
无法保证系统资源的安全性。
Token机制(令牌机制)就是用来解决无状态和安全性之间的矛盾。
原理如下:
1、用户发送用户名和密码(一般密码加密),请求通过验证
2、服务器判断用户名和密码是否正确
3、服务器通过,返回Token即过期时间
4、所有请求携带返回的Token在过期时间内即可通过Token验证并正常使用RESTful API(服务器验证Token时间过期,则无法正常使用RESTful,需要从新验证)
代码测试:
表述性状态转移,分布式超媒体软件的 一种架构风格
一套简单的设计原则,一种架构风格或(模式),不是一种具体的标准或架构
基于使用HTTP、URI等现有的广泛流行的协议和标准,并由几个核心抽象概念支撑。
一、资源:任何事物,只要有被引用的必要,就是一个资源(resource)。它可以是一个事物,也可以是一个抽象的概念。
二、表示:资源和表示不是一码事,web上获取的不是资源,而是资源的表示。
三、状态:在客户-服务端模式下,让客户端维护应用状态,并确保客户端向服务器发出的请求都包含理解请求所需的全部信息。
约束和风格:核心是架构以资源为核心的模型 优点:具有更好的扩展性
url表示资源
CRUD操作
状态表述转移
无状态服务
Http状态码
Cache控制
Proxy
关键原则:
1、为所有资源定义ID:
URI(统一资源定位符),URI构成了一个全局命名空间,使用URI标识的关键资源意味着它们获得了一个唯一、全局的ID。
总结:无论WEB中的资源代表单一数据项、数据项集合、虚拟或实际的对象还是计算结果等,都可以使用URI标识。
2、将所有资源链接在一起:
URI命名规格是全球标准,构成web的所有资源都可以互通通信。
总结:任何可能的情况下,使用连接指引可以被标识的资源。
3、使用标准方法
POST-Create GET-Read Put-Update DELETE-Delete
总结:为使客户端程序能与web中的的资源相互协议,资源应该正确地实现默认的应用协议(即HTTP协议),并使用协议标准的GET/PUT/POST/DELETE方法。
4、资源多重表示
总结:尽可能针对不同的需求提供资源多重表示
5、无状态通信
总结:要做到无状态通信往往需要一些重新设计-不能简单地将一些Session状态绑缚在URI上。
RESTful:符合REST约束风格和原则的应用程序或设计就是RESTfull
Spring对RESTful的支持:
@RequestMapping和@PathVariable注解,支持资源标识和URL映射
目前互联网公司越来越流行提供RESTful形式的API供第三方调用
Token认证机制:
RESTful提供的API是无状态的,即下一次调用请求与当前的调用请求时完全无关的,但这就
无法保证系统资源的安全性。
Token机制(令牌机制)就是用来解决无状态和安全性之间的矛盾。
原理如下:
1、用户发送用户名和密码(一般密码加密),请求通过验证
2、服务器判断用户名和密码是否正确
3、服务器通过,返回Token即过期时间
4、所有请求携带返回的Token在过期时间内即可通过Token验证并正常使用RESTful API(服务器验证Token时间过期,则无法正常使用RESTful,需要从新验证)
代码测试:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Rest架构风格页面请求</title> </head> <body> <!-- 由于表单不知道Update提交方式,这里只能只能写post --> <form action="/user/order/1234" method="post"> <!-- 隐藏域可以被HideenHttpMethodFilter过滤器处理,从而修改请求操作方法 --> <inpt type="hidden" name="_method" value="put"> <input type="text" name="name"></br> <input type="text" name="age"></br> <input type="submit" value="提交"> </form> </body> </html>
<!-- 配置SpringMVC支持res架构风格过滤器 --> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <servlet-name>SpingMVC</servlet-name> </filter-mapping>
@Controller public class RestfulAPIController { @RequestMapping(value="/user/order/{id}",method=RequestMethod.PUT) public String updateUserRestFulAPI(@PathVariable("id")String id,@RequestParam("name")String name) { S 4000 ystem.out.println(id); System.out.println(name); return ""; } }
相关文章推荐
- 使用Intellij Idea 和SpringMVC开发具有RESTful架构风格的API接口
- SPRINGMVC中的RESTFUL架构风格
- springmvc中的restful架构风格
- 使用SpringMVC开发RestFul风格接口的java-web项目,tomcat部署并客户端访问
- RESTful 架构风格概述
- 针对RestFul风格的PUT,DELETE请求在SpringMVC的Controller层无法接收参数的解决方案
- RESTful 架构风格概述
- RESTful 架构风格概述
- python3-开发进阶-RESTful 软件架构风格
- Restful风格API接口开发springMVC篇
- SpringMVC+Json构建基于Restful风格的应用
- Restful风格API接口开发springMVC篇
- WebService restful架构风格
- 6 redis+单点登录+jackson序列化+redis分布式+spring session+springMVC全局异常控制+springMVC _RESTful 架构
- SpringMVC中restful风格的URL
- 对RESTful架构风格理解
- springMVC系列(七)——springMVC实现restful风格开发(post、get、put、delete)
- RESTful 架构风格概述
- POSTMAN测试SpringMVC RESTFul风格的服务端接口始终得不到值
- 用SpringMVC开发RESTful风格API接口