1.什么是restful风格

答出这两点就够了:

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(UniformResourceIdentifier)对应特定的资源,即资源标识。

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

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

2. 区分URL与URI

需要对HTTP协议更多的理解

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

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

3.测试样例

这里给出请求一个“资源”的写法demo,自己可以根据业务去具体实现

前端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号员工

4. restful四种方式

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

Spring提供了对Rest风格的支持--即从页面发起PUT、DELETE形式的请求,具体实现如下:

支持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>

filter配置之后开始写具体的页面

按照以下要求;

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="delete"/>

     <input type="submit" value="删除1号图书"/>

</form>

【串线篇】REST风格的请求格式的更多相关文章

  1. JMeter中各种请求格式--aduocd的博客

    背景:1.在JMeter的HTTP请求的测试中,经常会使用到不同的请求格式.常用的格式如,json,form-data,x-www-form-urlencoded,multipart/form-dat ...

  2. WebService 通过POST方式访问时候,因 URL 意外地以“/方法名”结束,请求格式无法识别 解决办法

    因URL意外地以“/方法名”结束,请求格式无法识别. 执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息. 解决方法:在webservice的we ...

  3. 谈谈form-data请求格式

    最近一直都比较忙,坚持月月更新博客的计划不得中止了,今天好不容易抽出点时间来说说最近项目中遇到的一个问题,有关request post请求格式中的multipart/form-data格式. 引言 最 ...

  4. .asmx支持post请求或者get请求调用(WebService "因 URL 意外地以 结束,请求格式无法识别" 的解决方法)

    使用Post调用以asmx形式提供的webservice时,在本机调试没有调用问题.一旦部署至服务器后会提示如下信息: <html> <head> <title>因 ...

  5. SQLServer调WebService & 错误解决:请求格式无法识别

    (sqlServer 2008 + VS2010) 首先,对服务器进行配置. sp_configure ; GO RECONFIGURE; GO sp_configure ; GO RECONFIGU ...

  6. ajax请求格式

    ajax请求格式........... var rowsData = $('#receiptPrintList').datagrid('getSelections'); $.ajax({ type: ...

  7. ASP.NET WebServices 因 URL 意外地以“/HelloWorld”结束,请求格式无法识别。

    今天在使用Asp.net做一个WebServices时通过Get方式调用方法时却出现了以下错误(仅在Get请求下,POST下正常)   在网络和MSDN上了解到WebServices默认只启用 Htt ...

  8. HTTP请求格式和HTTP响应格式

    主要内容: 1.HTTP请求格式 2.HTTP响应格式 一.HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:l   请求方 ...

  9. jquery请求格式和返回类型 汇总

    常规请求基本格式 1 [WebMethod] 2 public string SayHello(string name) 3 { 4 return "Hello " + name; ...

随机推荐

  1. MinMax 容斥 学习笔记

    基本形式 \[ \max(S) = \sum_{T\subseteq S, T \neq \varnothing} (-1)^{|T|-1}\min(T) \] 证明 不提供数学证明. 简要讲一下抽象 ...

  2. PhpStorm中如何使用database工具

    环境:ubuntu18.4 mysql5.7 一. 打开database 1.选择View—>Tool Windows—>Database单击打开. 2.新增数据连接 选择 “+”—> ...

  3. 高手教您编写简单的JSON解析器

    编写JSON解析器是熟悉解析技术的最简单方法之一.格式非常简单.它是递归定义的,所以与解析Brainfuck相比,你会遇到轻微的挑战 ; 你可能已经使用JSON.除了最后一点之外,解析 Scheme的 ...

  4. RandomAccessFile类学习

    RandomAccessFile类学习 RandomAccessFile是io包的类,从Object直接继承而来,只可以对文件进行操作,可以对文件进行读取和写入. 当模式为r:当文件不存在时会报异常: ...

  5. springmvc中拦截器配置格式

    对于springmvc,有两种方式配置拦截器. 一是实现HandlerInterceptor接口,如 public class MyInterceptor1 implements HandlerInt ...

  6. Ubuntu12.04安装配置x11vnc

    全程在root下进行 安装x11vnc sudo apt-get install vino vinagre x11vnc 设置密码 sudo x11vnc -storepasswd sudo x11v ...

  7. flutter页面布局一

    Padding组件 在 html 中常见的布局标签都有 padding 属性,但是 Flutter 中很多 Widget 是没有 padding 属性.这个时候我们可以用 Padding 组件处理容器 ...

  8. Delphi 判断特定字符是为单字节还是双字节

    判断特定字符是为单字节还是双字节 // mbSingleByte 单字节字符 //mbLeadByte 双字节字符首字节 //mbTrailByte 双字节字符尾字节 Edit1.Text:='010 ...

  9. LOJ 6436 「PKUSC2018」神仙的游戏——思路+卷积

    题目:https://loj.ac/problem/6436 看题解才会. 有长为 i 的 border ,就是有长为 n-i 的循环节. 考虑如果 x 位置上是 0 . y 位置上是 1 ,那么长度 ...

  10. [BZOJ1572] WorkScheduling

    中文题目:工作安排 原文题目:Work Scheduling 传送门 本题可以采用贪心 算法一:按工作时间排序,如果工作能按时完成的工作就按时完成,如果工作不能按时完成就把之前价值最小的工作和当前作比 ...