@RequestParam和@RequestBody的使用

时间:2024-03-28 20:22:50

一 @RequestParam注解

(1)@RequestParam总体上来说,该注解类拥有三个参数:
  • value、name 属性都标识请求参数名(必须配置);
  • required:参数是否必传,默认为 true,可以设置为非必传 false;(如果设置了必传或默认,请求未传递参数,将会抛出异常)
  • defaultValue:参数默认值,如果设置了该值,required 将会自动设置为 false;
(2)@RequestParam注解,获取的参数放在请求
  • get请求的 requestHeaders 中 content-type 这个字段,使用 form-data 表单形式携带参数请求;
  • Spring中的@RequestParam注解接收的参数大多数场景是来自requestHeaders中,即请求头,也就是url中,格式为:http://localhost:8080?name=yc&age=23,由于 url 长度有限制,所以参数需要限制数量和值得长度;
(3)简单使用

案例一:
代码:
@RequestParam和@RequestBody的使用
测试一:
@RequestParam和@RequestBody的使用
测试二:
设置了必传或默认,请求未传递参数,将会抛出异常,如下
@RequestParam和@RequestBody的使用

二、@RequestBody注解

@RequestBody注解只拥有一个参数:

required 默认为 true,即对象中的属性必须有一个要传,否则会抛出异常:org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing

@RequestBody注解获取的参数在请求哪?
  • post请求的requestHeaders请求头中有content-type字段,一般用来处理:applicatin/json格式的参数;
  • Spring中的@RequestBody注解是用来接收请求体中的参数数据,即requestBody请求体中,故不受参数数据长度的限制;
(3)简单使用

案例一:
代码:@RequestParam和@RequestBody的使用
测试:@RequestParam和@RequestBody的使用