SpringMVC(十二)Restful架构风格
来源:互联网 发布:windows10服务极限优化 编辑:程序博客网 时间:2024/05/22 17:43
什么是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,需要从新验证)
代码测试:
<%@ 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>
@Controllerpublic class RestfulAPIController { @RequestMapping(value="/user/order/{id}",method=RequestMethod.PUT) public String updateUserRestFulAPI(@PathVariable("id")String id,@RequestParam("name")String name) { System.out.println(id); System.out.println(name); return ""; }}
- SpringMVC(十二)Restful架构风格
- SpringMVC实现RESTful风格
- SpringMVC实现RESTful风格
- springmvc restful风格支持
- SpringMVC实现RESTful风格
- SpringMVC实现RESTful风格
- RESTful风格的springMVC
- springmvc Restful风格
- Springmvc restful风格
- SpringMVC+Restful风格编程
- springMVC的restful风格
- RESTful架构风格
- RESTful架构风格
- RESTful架构风格
- RESTful 架构风格概述
- RESTful架构风格
- RESTful架构风格概述
- RESTful 架构风格概述
- 机器模型性能度量
- windows系统下派克斯(PacketiX)产品使用教程
- 抓包工具Charles
- Synopsys VCS vY-2006.06
- Class for the use of RegQueryInfoKey pinvoke interop in C#
- SpringMVC(十二)Restful架构风格
- HDU 5923Prediction
- linux mysql 重启
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN【转】
- logger4j输出日志信息
- RSA初步记录
- Android 网络框架之Retrofit2使用详解及从源码中解析原理
- 动态存储空间管理示例——比较两个数大小
- Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知