REST风格

目录

概述

REST访问格式(区分方式)

REST风格-使用案例

表现层代码(使用REST风格)

代码解释

代码的测试

 接收参数注解说明

区别@RequestBody,@Requestparm和@PathVariable


概述

REST(Representational State Transfer) 表现形式状态转换

REST其实就是资源访问路径的一种格式。也可以当成对资源访问路径的书写规范。

之所以说是可以当成,其实REST并不称自己是一种规范而是风格,因为REST刚出来的时候,使用者还不习惯REST风格的写法, 到后来大家都觉得REST风格书写简便,大家都默默规定了这种书写形式。所有可以说是可以当成一种规范来看待。

作用:根据REST规定的形式书写访问路径,书写更简单,访问信息更隐蔽。

根据REST风格对资源进行访问称为RESTful  

REST访问格式(区分方式)

核心:按照REST风格访问资源时使用行为动作来区分对资源进行了何种操作。

 例如现在有book表作为资源,访问路径格式如下 :

访问路径行为动作说明
http://localhost/books GET(查询)查询全部图书信息
http://localhost/books/1GET(查询)查询指定图书信息
http://localhost/booksPOST(新增/保存)添加图书信息
http://localhost/booksPUT(修改/更新)修改图书信息
http://localhost/books/1DELETE(删除)删除指定图书信息

说明:不用在意写法,格式就是按照行为动作来指定该路径想要实现的功能。我们可以在对应路径Servlet下实现对应功能。后面跟着的数字/参数,我们称为路径参数。Servlet接收参数时,只要声明在方法参数中,方法体引用即可。

REST风格-使用案例

案例只使用表现层作为测试。不关联业务层和数据层。

表现层代码(使用REST风格)

@RestController
@RequestMapping(value = "/books",produces = "application/json; charset=utf-8" )
public class BookController {

    @GetMapping()
    public String getAll(){
        System.out.println("getAll...");
        return "获取所有信息...";
    }

    @GetMapping("/{id}")
    public String selectById(@PathVariable int id){
        System.out.println("selectById..."+ id);
        return "根据id查询单个信息...";
    }
    
    @PostMapping()
    public String save(){
        System.out.println("save...");
        return "保存成功...";
    }

    @DeleteMapping("/{id}")
    public String delete(@PathVariable int id){
        System.out.println( id +"..delete.." );
        return "删除成功...";
    }
}

代码解释

1.@RestController复合注释:结合和@ResponseBody和@Controller两个注释。@ResponseBody声明后可响应数据,@Controller声明为表现层加载bean。

2.@RequestMapping注释:声明Servlet的访问路径,还可设置编码,解决乱码问题。

3. @GetMapping、@PostMapping...看作行为动作,配合@RequestMapping,就可以知道访问路径想要做些什么了。

4.值得注意的是:如果带有路径参数,则需要参考使用案例代码中的DeleteMapping("/{id}")方式书写,记得方法需要使用参数接收后使用路径参数,路径参数名和方法形参名要一致。

5.如果需要使用路径参数,记得在参数写注解@PathVariable。

代码的测试

我们如果使用浏览器直接访问,只能使用GET行为动作,不能满足测试要求,所以我们选择一款接口测试工具"PostMan"。可以模拟任意请求方式,符合代码测试需求。

1.先将Tomcat跑起来

2.PostMan接口测试 

测试不带路径参数的GET 

结果

 测试带路径参数的GET

 结果

 

测试POST

 接收参数注解说明

在上方案例可以看到,路径参数使用了注解@PathVariable,表示参数可以接收路径参数,但是如果接收的是url参数或是json数据的话,@PathVariable就不可用了。那应该用什么呢?

区别@RequestBody,@Requestparm和@PathVariable

1.@RequestBody用来接收json数据。

2.@Requestparm用来接收url地址传参或表单传参。

3.@PathVariable用来接收路径参数

三种接收方式各有不同,最常用的是@RequestBody,因为前后端传参基本是以json的数据格式进行传输,如果使用非json数据传输,可以考虑使用@Requestparm,参数简单且较少,可以考虑使用路径参数,例如传ID值。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mao.O

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值