3、REST风格的URL
2024-10-14 17:12:02
1、概述
HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE,它们分别对应四种基本的操作,GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。
示例:
—— /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
2、如何发送一个PUT和DELETE请求?
常见的有post和get请求,那么怎么弄一个put和delete请求出来呢?浏览器的form表单只支持GET和POST请求,而DELETE和PUT请求并不支持。为解决这个题,Spring3.0添加了一个 HiddenHttpMethodFilter 过滤器,可以将带有_method参数的http post请求转换为put或delete请求。从而解决问题。
如何发送PUT和DELETE请求呢?
①、需要在web.xml文件中配置一个HiddenHttpMethodFilter:
<!-- 配置org.springframework.web.filter.HiddenHttpMethodFilter:可以把POST请求转化为DELETE或PUT请求 -->
<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>
②、需要发送post请求
③、在发送post请求时携带一个 name="_method" 的隐藏域,其值为delete或者是put。如下:
<!-- 发送put请求 -->
<form action="rest/put/1" method="post">
<input type="hidden" name="_method" value="put" >
<input type="submit" value="3、tetRest PUT请求">
</form> <!-- 发送delete请求 -->
<form action="rest/delete/1" method="post">
<input type="hidden" name="_method" value="delete" >
<input type="submit" value="4、tetRest DELETE请求">
</form>
④、在接受PUT或DELETE请求方法的注解@RequestMapping中设定method为PUT或DELETE,如下:
@RequestMapping(value="/rest/put/{id}", method=RequestMethod.PUT)
public String testRestPut(@PathVariable Integer id){
System.out.println("testRestPut 方法,响应PUT请求。id = " + id); return SUCCESS;
} @RequestMapping(value="/rest/delete/{id}", method=RequestMethod.DELETE)
public String testRestDelete(@PathVariable Integer id){
System.out.println("testRestDelete 方法,响应DELETE请求。id = " + id); return SUCCESS;
}
最新文章
- centos6 系统安装 system-config-kickstart 工具
- phpcms 标签
- 修改navigationbar右侧按钮离屏幕边缘位置
- mysql-zabbix-agent
- OC: 类的扩展、类的延展、协议、 NSDate
- poj3295解题报告(构造、算术表达式运算)
- com.android.builder.packaging.DuplicateFile
- Apache-rhel5.8环境下编译安装
- NET Core开发-读取配置文件Configuration
- log4net结构
- 孙鑫HTML视频学习总结
- phpcms 模板常用标签指南
- Python开发:部分第三方库无法在线安装解决方法
- request.getRealPath为什么会被代替
- Centos 6.5 freeswitch 编译mod_shout
- type=hidden
- mycat高可用集群搭建
- 30行python让图灵机器人和茉莉机器人无止尽的瞎扯蛋
- Win32 消息响应顺序
- 21.线程池ThreadPoolExecutor实现原理
热门文章
- WPF 控件截图位置不正确的问题
- Unable to create the store directory. (Exception from HRESULT: 0x80131468)
- linux创建线程之pthread_create
- 大晚上装CocoaPods出现错误坑爹
- 多态&;&;父类调用子类特有的方法
- cocos2dx中的三种基本的数据类型
- python学习小结4:类
- SQL Server 创建表 添加主键 添加列常用SQL语句【转】
- NOI2014 全国互测Round2
- Codeforces Round #302 (Div. 2) D. Destroying Roads 最短路