SpringMVC RESTful支持 2021-09-20

SpringMVC 应用开发

1 基础概念介绍
2 返回值处理
3 参数绑定处理
4 RequestMapping注解
5 RESTful支持
6 拦截器应用
7 CORS跨域解决方案
8 Mock测试(模拟测试)
9 ControllerAdvice
10 乱码解决
11 非注解开发方式


RESTful支持

基础知识介绍

REST(英文:Representational State Transfer,简称 REST,意思是:(资源)表述性状态转化) 描述了一个架构样式的网络系统。

REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

RESTful的特性

  • 资源
    网络上的一个实体,或者说是网络上的一个具体信息。
    要获取这个资源,访问它的 URI 就可以,因此 URI 即为每一个资源的独一无二的识别符。
  • 表现层
    把资源具体呈现出来的形式,叫做它的表现层。
    文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现。
  • 状态转化
    每发出一个HTTP请求,就代表了客户端和服务器的一次交互过程。
    HTTP协议,是一个无状态协议,即所有的 【状态】都保存在服务器端。
    HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT 、DELETE分别对应四种基本操作。

如何设计RESTful应用程序的API

  • 路径设计:数据库设计完毕之后,基本上就可以确定有哪些资源要进行操作,相对于的路径也可以设计出来
  • 动词设计:也就是针对资源的具体操作类型,由HTTP动词表示,常用的HTTP动词如下:POST、DELETE、 PUT、GET

一、 RESTful的URL路径变量

对应解析资源

1.1 URL-PATTERN :设置为/,方便拦截 RESTful 请求。

<servlet-mapping> 
	<servlet-name>DispatcherServlet</servlet-name>
	<url-pattern>/</url-pattern> </servlet-mapping>

1.2 @PathVariable:可以解析出来URL中的模板变量({id})

http://localhost:8080/ssm/item/1/zhangsan

@RequestMapping(“{id}/{name}”) 
@ResponseBody 
public Item queryItemById(@PathVariable Integer id, @PathVariable String name){}

二、 RESTful的CRUD

针对状态转换,设置相关对应的方法。

  • @RequestMapping:通过设置method属性值,可以将同一个URL映射到不同的HandlerMethod方法 上
  • @GetMapping、@PostMapping、@PutMapping、@DeleteMapping注解同@RequestMapping注解 的method属性设置。

三、 RESTful的资源表述

RESTful服务中一个重要的特性就是一种资源可以有多种表现形式,在SpringMVC中可以使用 ContentNegotiatingManager这个内容协商管理器来实现这种方式。

3.1 内容协商的方式有三种

不过现在RESTful响应的数据一般都是JSON格式,所以一般也不使用内容协商管理器,直接使用 @ResponseBody注解将数据按照JSON格式返回。

  • 扩展名:比如.json表示我要JSON格式数据、.xml表示我要XML格式数据
  • 请求参数:默认是”format”
  • 请求头设置Accept参数:比如设置Accept为application/json表示要JSON格式数据

四、 静态资源访问

如果在DispatcherServlet中设置url-pattern为 /,则会对静态资源进行访问处理。

/ 会对静态资源进行拦截,使用以下配置,告诉Spring 去获取相应的静态资源即可。
在springmvc.xml文件中,使用 mvc:resources 标签,具体如下:

<!-- 当DispatcherServlet配置为/来拦截请求的时候,需要配置静态资源的访问映射 --> 
<mvc:resources location="/js/" mapping="/js/"/>
<mvc:resources location="/css/" mapping="/css/"/>

SpringMVC 会把 mapping 映射到ResourceHttpRequestHandler,这样静态资源在经过
DispatcherServlet 转发时就可以找到对应的 Handler 了。

上一篇:SMVC2:RestFul风格的使用


下一篇:14-Restful Web Service