SpringMVC——RESTful风格介绍,案例解析

SpringMVC——RESTful风格

一、RESTful风格

1.概念

RESTful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

2.传统方式操作资源,RESTful风格操作资源

资源:在互联网上,所有的事物都可以被抽象为资源
资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。

传统方式操作资源:

http://127.0.0.1/item/queryItem.action?id=1 查询,GET 
http://127.0.0.1/item/saveItem.action 新增,POST 
http://127.0.0.1/item/updateItem.action 更新,POST 
http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST

使用RESTful风格操作资源:

http://127.0.0.1/item/1 查询,GET 
http://127.0.0.1/item 新增,POST 
http://127.0.0.1/item 更新,PUT 
http://127.0.0.1/item/1 删除,DELETE

我们可以发现使用RESTful风格我们请求传参变得简单了,直接/参数就可以代替传统的?参数=值

2.案例展示

RESTful风格携带参数路径传值:

@Controller
public class HelloController{
    //请求映射访问路径,{}里面的是传的参数
    @RequestMapping("/test1/{p1}/{p2}")
    //@PathVariable路径变量 这个注解可以将值和@RequestMapping中的带{}的参数对应起来
    public String hello(@PathVariable int p1, @PathVariable int p2, Model model){
        model.addAttribute("msg",p1+p2);
        return "hello";
    }
}

启动Tomcat测试:
我们访问的路径为http://localhost:8080/springmvc/test1/1/2后面传入1和2两个参数
在这里插入图片描述
使用了路径变量可以让路径变得简单;获得参数更加方便,框架还会自动进行类型转换。
通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法,如这里访问是的路径是/test1/1/a,则路径与方法不匹配,而不会是参数转换失败。
在这里插入图片描述
RESTful风格method属性指定请求类型:
将请求设置为POST请求方式

@Controller
public class HelloController{
    //value表示请求的url,method表示请求方式为POST请求
    @RequestMapping(value = "/test1",method = {RequestMethod.POST})
    public String hello(Model model){
        model.addAttribute("msg","method的请求方式为POST");
        return "hello";
    }
}

测试:
在这里插入图片描述
我们发现将请求方式为POST时会报错,因为我们使用地址栏访问时默认请求时GET请求,所以会报405错误

那我们将请求改为GET请求进行测试

@Controller
public class HelloController{
    //value表示请求的url,method表示请求方式为GET请求
    @RequestMapping(value = "/test1",method = {RequestMethod.GET})
    public String hello(Model model){
        model.addAttribute("msg","method的请求方式为GET");
        return "hello";
    }
}

在这里插入图片描述

Spring MVC 的 @RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。但是所有的请求默认都会是 HTTP GET 类型的。
但是我们可以使用以下注解去换掉@RequestMapping,已达到改变请求方式的目的

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMappin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值