SpringMVC之REST

简介: SpringMVC之REST

REST:


Representational State Transfer。(源)表现层态转化。是目前
最流行的一件架。它结构清晰、符合准、易于理解、展方便,
所以正得到越来越多网站的采用

• 资源(Resources:网上的一个体,或者是网上的一个具体信息。它
可以是一段文本、一张图片、一首歌曲、一之就是一个具体的存在。
可以用一个URI源定位符)指向它,种资对应一个特定的 URI 。要
源,访问它的URI就可以,因此 URI 一个源的独一无二的


现层Representation源具体呈出来的形式,叫做它的表现层
Representation)。比如,文本可以用 txt 格式表,也可以用 HTML
式、XML 格式、JSON 格式表,甚至可以采用二制格式。


态转化(State Transfer出一个求,就代表了客端和服器的一
次交互程。HTTP协议,是一个无状态协议,即所有的状都保存在服
端。因此,如果客端想要操作服器,必手段,器端
态转State Transfer)。而这种转化是建立在表现层之上的,所以就是
现层态转。具体,就是 HTTP 协议里面,四个表示操作方式的
GETPOSTPUTDELETE。它别对应基本操作:GET 用来
源,POST 用来新建源,PUT 用来更新源,DELETE 用来源。

REST风格示例:


– /order/1 HTTP GET :得到 id = 1 的 order   
– /order/1 HTTP DELETE:删除 id = 1的 order   
– /order/1 HTTP PUT:更新id = 1的 order   
– /order HTTP POST:新增 order


HiddenHttpMethodFilter浏览form 只支持 GET
POST 求,而DELETEPUT method 并不支
持,Spring3.0 添加了一个过滤器,可以将转换
为标准的 http 方法,使得支持 GETPOSTPUT
DELETE 求。


示例:


/**
 * Rest风格的URL
 * 以CRUD为例
 * 新增:/order POST
 * 修改:/order/1 PUT
 * 获取:/order/1 GET
 * 删除:/order/1 DELETE
 * @param id
 * @return
 */
@RequestMapping(value = "/testRest/{id}",method = RequestMethod.PUT)
    public String testRestPut(@PathVariable("id") Integer id){
        System.out.println("testRest PUT: " + id);
        return SUCCESS;
    }
@RequestMapping(value = "/testRest/{id}",method = RequestMethod.DELETE)
    public String testRestDelete(@PathVariable("id") Integer id){
        System.out.println("testReset DELETE: " + id);
        return SUCCESS;
    }
@RequestMapping(value = "/testRest",method = RequestMethod.POST)
    public String testRestPost(){
        System.out.println("testRest POST");
        return SUCCESS;
    }
@RequestMapping(value = "/testRest/{id}",method = RequestMethod.GET)
    public String testRestGet(@PathVariable("id") Integer id){
        System.out.println("testRest GET: " + id);
        return SUCCESS;
    }


jsp:


<form action="test/testRest/1" method="post">
      <input type="hidden" name="_method" value="PUT">
      <input type="submit" value="testRest PUT"/>
  </form>
  <br><br>
  <form action="test/testRest/1" method="post">
      <input type="hidden" name="_method" value="DELETE">
      <input type="submit" value="testRest DELETE"/>
  </form>
  <br><br>
  <form action="test/testRest" method="post">
      <input type="submit" value="testRest POST"/>
  </form>
  <br><br>
  <a href="test/testRest/1">Test Rest GET</a>
  <br><br>


 

 控制台结果:


总结:


如果需要发送DELETE和PUT请求,需要进行如下操作:


1、需要在web.xml中配置HiddenHttpMethodFilter;

2、需要发送 POST 请求;

3、需要在发送POST请求时携带一个name="_method"的隐藏域,值为DELETE或PUT。


SpringMVC如何在方式中获取URL里面的占位符呢?

使用@PathVariable注解即可。


 

@RequestParame

@RequestParam:把请求参数传递给请求方法

value:值即请求参数的参数名称

required:该参数是否必须,默认true

defaultValue:参数默认值


示例:


 

@RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(value = "username") String username,
                                   @RequestParam(value = "age", required = false, defaultValue = "0") int age){
        System.out.println("testRequestParam: username= " + username + ",age=" + age);
        return SUCCESS;
    }

jsp:


<a href="test/testRequestParam?username=java&age=11">testRequestParam</a>





@ReuqestHeader


用法同@RequestParam,用于获取请求头信息传入方法参数。

示例:


@RequestMapping("/testRequestHeader")
    public String testRequestHeader(@RequestHeader("User-Agent") String ua){
        System.out.println("testRequestHeader: User-Agent= " + ua);
        return SUCCESS;
    }

控制台输出


testRequestHeader: User-Agent= Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36

@CookieValue


绑定请求中的Cookie值到方法参数中,用法同@RequestParam


示例:


RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue(value = "JSESSIONID") String seesionId){
        System.out.println("testCookieValue: seesionId = " + seesionId);
        return SUCCESS;
    }
对应jsp:
<a href="test/testCookieValue">test testCookieValue</a>

控制台:


testCookieValue: seesionId = 660443E054FC195D5DAD798AEF32CBCD


和开发者工具的cookie值是一样的:


相关文章
|
7月前
|
JSON Java 网络架构
SpringMVC(三)【REST 风格】
SpringMVC(三)【REST 风格】
|
7月前
|
应用服务中间件 网络架构 容器
SpringMVC(三)【REST 风格】(2)
SpringMVC(三)【REST 风格】
|
Java API 网络架构
Spring Boot - Rest VS GraphQL
Spring Boot - Rest VS GraphQL
76 0
|
Java 测试技术 API
Spring Boot中使用Swagger CodeGen生成REST client
Spring Boot中使用Swagger CodeGen生成REST client
|
缓存 前端开发 JavaScript
Spring MVC 中的http Caching
Spring MVC 中的http Caching
|
Java 网络架构 Spring
Spring Boot---调用REST服务之WebClient
Spring Boot---调用REST服务之WebClient
Spring Boot---调用REST服务之WebClient
|
JSON 网络架构 数据格式
SpringMVC的请求与相应和REST风格
SpringMVC的请求与相应和REST风格
103 0
SpringMVC的请求与相应和REST风格
|
前端开发 Java Spring
Spring MVC获取HTTP请求头的两种方式小结
这篇文章主要介绍了Spring MVC获取HTTP请求头的两种方式小结,帮助大家更好的理解和使用Spring MVC,感兴趣的朋友可以了解下
1056 0

热门文章

最新文章

下一篇
开通oss服务