SpringMVC_第四章(RESTful)

1:什么是RESTful

        首先说什么是REST,REST即表述性状态转移(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。它不是规范,不是标准,它一种设计模式。REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML标准通用标记语言下的一个子集)以及HTML(标准通用标记语言下的一个应用)这些现有的广泛流行的协议和标准。rest与restful相比,多了一个ful,就英语层面来说是一个形容词,restful翻译为中文为: “rest式的”。

RESTful的优点就是:

1:统一了客户端访问资源的端口 

2:URI更加简洁,易于理解,便于扩展

3:便于不同系统间资源共享

为使客户端程序能与你的资源相互协作,资源应该正确地实现默认的应用协议(HTTP),也就是使用标准的GET、PUT、POST和DELETE方法。

GET:获取资源(查询)

POST:新建资源(新增)

PUT:修改资源(修改)

DELETE:删除资源(删除)

在Restful之前的操作:
http://127.0.0.1/user/query?id=1                GET  根据用户id查询用户数据
http://127.0.0.1/user/save                           POST 新增用户
http://127.0.0.1/user/update                        POST 修改用户信息
http://127.0.0.1/user/delete?id=1                GET 删除用户信息

RESTful用法:
http://127.0.0.1/user/1              GET  根据用户id查询用户数据
http://127.0.0.1/user                 POST 新增用户
http://127.0.0.1/user                 PUT 修改用户信息
http://127.0.0.1/user                 DELETE 删除用户信息

         之前的操作是没有问题的,大神认为是有问题的,有什么问题呢?你每次请求的接口或者地址,都在做描述,例如查询的时候用了query,新增的时候用了save,其实完全没有这个必要,我使用了get请求,就是查询.使用post请求,就是新增的请求,我的意图很明显,完全没有必要做描述,这就是为什么有了restful.

2:Spring的RESTful风格实现

2.1由于在from表单中没有的method只有get,post方法没有put和delete方法,所以需要设置过滤器,作用是将put和delete的参数获取并且放到request中,controller便可以拿到这些参数。

需要注意的是,只有context-type:application/x-www-form-urlencoded的请求才会被过滤。

    <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.2:需要在表单中添加隐藏表单域,将HiddenHttpMethodFilter里的_method属性改为put或者delete后提交,因为只有form表单才具有post方法,而这个过滤器也只能将post方法转化,get则不行。

比如你要提交一个删除的请求

表单域如下:

             <form action="${pageContext.request.contextPath}/course/deleteById/${course.id}" method="post">
                        <button class="btn btn-danger btn-sm delete_btn" type="submit">
                           <input type="hidden" name="_method" value="DELETE"/>
                           <span class="glyphicon glyphicon-trash">删除</span>
                          </button>
               </form>

其Controller里的方法如下:@PathVariable注解绑定前端传递的参数

@RestController
public class RestCountController {

    @Autowired
    MtestService mtestService;

    @GetMapping(value = "/mtest/{id}")
    public Mtest rest1(@PathVariable("id") Integer id){
        System.out.println("rest1传递的参数id:"+id);
        Mtest mtest = mtestService.selectById(id);
        return mtest;
    }
}

最后显示的路径地址是:

http://localhost:8080/Spring_04_MVC1/mtest/2

这就是一个简单的springRESTful风格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值