2、Restful 风格

目录

一、什么是 Restful 风格?

二、Restful 的特点

三、实现

1、RESTful 风格的 url:

2、url 不变,使用 method 属性区分

3、 使用 @GetMapping、@PostMapping

4、Restful 风格特点总结 


一、什么是 Restful 风格?

        Restful 风格指的是网络应用中资源定位和资源操作的风格。不是标准也不是协议。

        Rest:Representational State Transfer 的缩写,“表现层状态转化”。

       

二、Restful 的特点

  • Restful 风格最大的特点:资源、统一接口、URL 和无状态。
  • 资源:互联网所有的事物都可以被抽象为资源,例如:.txt、.html、.jpg、.mp3、.mp4等
  • Restful 架构风格是围绕资源展开的,资源操作都是统一接口的:   
  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
  • PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。
  • DELETE(DELETE):从服务器删除资源。
  • URI:每一个URI(统一资源定位符)指向一个特定的资源。通过URI来访问资源。最典型的URI 就是 URL。@RequestMapping 的 path/value 属性表示的就是 URL 的一部分。
  • 无状态:所有的资源,都可以通过URI定位,而这个定位与其它资源无关。例如无需登录就可以通过URL查看,就是无状态。需要登录才能查看,就是有状态。

三、实现

1、RESTful 风格的 url:

  • @PathVariable:        用于修饰方法传入参数,表示该参数值从请求路径中获取
  • @RequestMapping(“h2/(a)/(b)”) :

                                          / (a)/(b):表示要传入的参数值,在请求 url 中用 / 分隔多个参数

@Controller
public class RESTfulController {

    //传统方式:http://localhost:8080/h1?a=1&b=11
    @RequestMapping("h1")
    public String test1(int a, int b , Model model){
        int rslt=a+b;
        model.addAttribute("msg", "结果为:"+rslt);
        return "hello";
    }

    //RESTful:http://localhost:8080/h2/1/11
    @RequestMapping("h2/{a}/{b}")
    public String test2(@PathVariable int a, @PathVariable int b , Model model){
        int rslt=a+b;
        model.addAttribute("msg", "结果为:"+rslt);
        return "hello";
    }
}

2、url 不变,使用 method 属性区分

  • @RequestMapping 的请求路径用 value path 属性表示。
  • @RequestMapping 的 method 属性表示请求方式,如:GET、POST 等。
@RequestMapping(value = "h3/{a}/{b}",method = RequestMethod.GET)
public String test3(@PathVariable int a, @PathVariable int b , Model model){
    int rslt=a+b;
    model.addAttribute("msg", "get结果为:"+rslt);
    return "hello";
}

@RequestMapping(value = "h3/{a}/{b}",method = RequestMethod.POST)
public String test4(@PathVariable int a, @PathVariable int b , Model model){
    int rslt=a+b;
    model.addAttribute("msg", "post结果为:"+rslt);
    return "hello";
}
  • 默认为 GET 方式请求,走入 method 为 get 的分支

  •  使用表单提交 POST 请求:​ 点击提交后,走入method为 post 的分支

3、 使用 @GetMapping、@PostMapping

等价于指定了请求的方式 @RequestMapping

  • @GetMapping:        @RequestMapping(method = RequestMethod.GET)的快捷方式
  • @POSTMapping:    @RequestMapping(method = RequestMethod.POST)的快捷方式
@GetMapping("h3/{a}/{b}")
public String test5(@PathVariable int a, @PathVariable int b , Model model){
    int rslt=a+b;
    model.addAttribute("msg", "get结果为:"+rslt);
    return "hello";
}

@PostMapping( "h3/{a}/{b}")
public String test6(@PathVariable int a, @PathVariable int b , Model model){
    int rslt=a+b;
    model.addAttribute("msg", "post结果为:"+rslt);
    return "hello";
}

4、Restful 风格特点总结 

  • 使请求路径变得更加简洁
  • 传递、获取参数值更加方便,框架会自动进行类型转换
  • 通过路径变量 @PathVariable 的类型,可以约束访问参数。

                若参数值与定义类型不匹配,则访问不到对应的方法,报 400 错误

  • 安全,请求路径中直接传递参数值,用 / 分隔,不会暴露传递给方法的参数变量名。
  • 高效,更易于缓存的实现,让响应更加高效。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值