REST风格的请求格式

Posted yanl55555

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了REST风格的请求格式相关的知识,希望对你有一定的参考价值。

1.什么是rest

答出这两点就够了:

1.1 统一接口

rest其实是基于HTTP的,四种方式。

RESTful架构风格规定,数据的元操作,即CRUD(create, read, update和delete,即数据的增删查改)操作,分别对应于HTTP方法:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源,这样就统一了数据操作的接口,仅通过HTTP方法,就可以完成对数据的所有增删查改工作。

即:

    • GET(SELECT):从服务器取出资源(一项或多项)。
    • POST(CREATE):在服务器新建一个资源。
    • PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
    • PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。
    • DELETE(DELETE):从服务器删除资源。

    1.2 URI

而且每个URI对应特定的资源,即资源标识。

可以用一个URI(统一资源定位符)指向资源,即每个URI都对应一个特定的资源。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。

一般的,每个资源至少有一个URI与之对应,最典型的URI即URL。

 1.3 区分URL与URI

需要对HTTP协议更多的理解
URL格式:协议://域名/路径?查询#HASH,实际的一个HTTP请求,还会包括Header(含Cookie、Method等)

资源的URI格式:协议://域名/路径,它只是URL的子集,表征一个资源实体。比如,

 

 

 

2.样例

请求一个“资源”的写法

 

前端jsp:

<%

              pageContext.setAttribute("ctp", request.getContextPath());

%>

项目路径ctp /order请求随便起名字emp/${id}

后端Controller:

@RequestMapping(value = "/emp/{id}", method = RequestMethod.GET)

    public String getEmp(@PathVariable("id") Integer id, Model model) {…}

或者不写前端之间在地址栏输入同样的请求:

localhost:8080/emp/1即可查询出1号员工

3. 四种方式

技术图片

 

 

但是默认只有get/post两种方式,怎么配置其他两种方式呢?

从页面发起PUT、DELETE形式的请求?Spring提供了对Rest风格的支持

1)、<!-- 支持Rest风格转换的filter -->去web.xml配置这个filter;

      

 <filter>

              <filter-name>HiddenHttpMethodFilter</filter-name>

              <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>

       </filter>

       <filter-mapping>

              <filter-name>HiddenHttpMethodFilter</filter-name>

              <url-pattern>/*</url-pattern>

       </filter-mapping>

 

2)、如何发其他形式请求?

按照以下要求;

1、创建一个post类型的表单

2、表单项中携带一个_method的参数

3、这个_method的值就是DELETE、PUT

示例:

<form action="book/1" method="post">

     <input name="_method" value="put"/>

     <input type="submit" value="更新1号图书"/>

</form>

<form action="book/1" method="post">

     <input name="_method" value="put"/>

     <input type="submit" value="更新1号图书"/>

</form>

 

以上是关于REST风格的请求格式的主要内容,如果未能解决你的问题,请参考以下文章

day02-REST和SpringMVC映射请求数据

SpringMVC入门系列篇3:@RequestMapping & @RequestHeader & @CookieValue详解与REST风格请求

REST网络请求

REST风格

REST及REST风格的Web服务与ArcGIS Server REST风格的Web服务 一

HiddenHttpMethodFilter进行请求过滤,实现Rest风格的url