@RequestParam、@PathVariable、@RequestBody的区别及SpringBoot后端接口的使用(持续更新ing

本文介绍前后端分离的相关知识、后端接口的设计及开发过程中遇见的问题

参考《SpringBoot应用开发实战》

一、RESTlful Web服务

REST规范(Representational State Transfer),就是URL用以定位资源,HTTP动词用以描述操作,用于后端接口的设计。

1.HTTP动词

REST规范的关键在于使用URL和HTTP动词来描述”调用方“与”资源“的交互。

1.1常见HTTP动词
  • GET:从服务端取出资源 ---->对应注解@GetMapping
  • POST:在服务端新建资源 ---->@PostMapping
  • PUT:在服务端更新资源(指客户端提供更改后完整的资源) ---->@PutMapping
  • PATCH:在服务端更新资源(指客户端提供改变的属性) ---->@PatchMapping
  • DELETE:从服务端删除资源 ---->@DeleteMapping
1.2GetMapping?RequestMapping?

GetMapping、PostMapping、PutMapping、PathMapping以及DeleteMapping这些“Mapping"本质上就是RequestMapping

这类注解的常用属性有:

  • path:指定接口的URL访问路径
  • params:指定请求中必须包含的参数
  • headers:指定请求中必须包含的请求头
  • consumes:指定请求的内容类型(Content-Type)
  • produces:指定响应的内容类型(Content-Type)

2.请求与响应

1.HTTP报文

请求(Request)与响应(Response)属于HTTP报文的两种形式。

由客户端传递至服务端就称为请求,由服务端返回给客户端则称为响应。

HTTP报文结构:

  • 起始行:用于描述请求或者响应的状态
  • Header:HTTP头信息
  • 空行:由CRLF字符组成的空行,用于分割HTTP头与HTTP报文体
  • Body:报文体,用于搭建请求或者响应中的实体
2.简单请求与@RequestParam

当请求内容相对简单时,@RequestParam可用于提取请求参数,该注解为可选项。

@RequestParam有三个实用属性:name(Web参数值)、required(是否必传)及defaultValue(默认值)。

例:

@GetMapping
public String test(@RequestParam String name){
    return name;
}

注意:@RequestParam的required属性默认为true,即如果未接收到对应参数或对应参数的值为null的话,接口会报错。

3.使用@PathVariable获取URL中的参数

@RequestParam和@PathVariable的API接口形式对比

  • @RequestParam:形如 "/user?username=..."    ,  不同参数之间用&分隔,每个参数形如name=value的形式,分别表示参数名字和参数值
  • @PathVariable:形如 "/user/{username}"    , 该URL对应的接口根据占位符中内容的不同,展示不同的用户信息

例:

@GetMapping("/{name}")
public String test(@PathVariable String name){
    return name;
}

4.@RequestBody与@ResponseBody

  • @RequestBody:将请求体的内容反序列化为对应类实例
  • @ResponseBody:将返回实例序列化为JSON字符串

二、错误处理

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值