本文源自Recently祝祝,创自Recently祝祝。转载请标注出处。
此解决方式在企业中有所应用,适合Java初级开发学习,参考。
本文字数与行数,耐心阅读必有收获。
1.SpringBoot接口请求头
使用SpringBoot写项目的时候,会遇到各种各样的接口请求,上次已经说了 前端x-www-form-urlencoded格式数据上传,后端接收方式,不熟悉x-www-form-urlencoded,可以查看上一篇文章:后端接收格式为x-www-form-urlencoded的数据。这篇文章里边我有详细说明。
除了x-www-form-urlencoded格式数据,还可能会遇到:
Get请求:发送Int、Double类型数据Get请求:发送String类型数据Post请求:文件上传Post请求:文件上传+其他请求条件Post请求:传输一个类Post请求:传输一个类+其他非类中的字段- .........
在开发中会遇到很多不同的数据请求,以上只是列举了一部分。不同的请求格式,后端接收格式不是一成不变的,需要根据不同的数据,编写不同的接口接收类型,接下来根据上边的列举来说明一下不同数据请求格式。
2.Get请求
Get请求有两种请求方式,使用其中的哪种方式都能达到效果
@RequestMapping(value='请求路径',method = RequestMethod.GET)或者GetMapper(请求路径)
2.1 发送int、Double类型数据
其实有一件事情需要明白,前端发送过来的int类型数据会被HTTP协议转化为字符串类型。
所以再后端可以使用字符串类型来接收这类的数据,double类型也是类似的。
但是如果前端传过来一个int类型,后端还是可以用int类型接收的,前端传什么类型数据后端可以用相同类型接收,也可以用String类型接收。用相同类型接收,Web开发框架会自动进行转换。
@ApiOperation(value = "根据ID查询人员参保信息表信息", position = 3, notes = "根据ID查询人员参保信息表信息", response = TmInsurancedPersonRDTO.class)
@RequestMapping(value = "/queryById/{id}", method = RequestMethod.GET)
public Result queryByID(@PathVariable String id) throws Exception {
}
APIPOST测试
2.2发送String类型数据
所以不管是什么基本数据类型的Get数据请求都跟上述部分一致。
3.POST请求
3.1文件上传:只上传一个文件,无其他入参
单独一个文件上传方式,作为开发我们都知道MultipartFile类型接收,可以接收txt、excel、pdf等类型文件。一般文件上传也是使用Post方式请求。@RequestParam进行文件名称注解name = "file",名称填写file请求的时候也要填写为file不能出错
@PostMapping(value = "/uploadFile")
@ApiOperation(value = "文件上传", notes = "文件上传")
public Result uploadFile(@RequestParam (name = "file") MultipartFile file) throws Exception {
String url = fileService.uploadFile(file);
return Result.success(url);
}
APIPOST测试 参数名称需要与注释一致,并且选择参数类型为file类型,然后点击参数值选择文件即可。
3.2文件上传:只上传一个文件,具有其他参数
其中@RequestPart,绑定请求中的一部分例如multipart/form-data数据请求,但是在需要跟其他参数一同上传的时候就需要进行区分每一个部分,并且给每一个部分取名,提交到服务器
所以再有表单数据和其他普通数据的时候需要使用@RequestPart进行区分后上传,由于表单数据只有两种类型Text、file,所以如果是一个类需要跟着文件一起上传,则需要将类用字符串的形式上传,然后再转化为类对象
在这个例子中,使用 @RequestPart 注解获取名为"NewsPolicyRDTO"的请求参数,并将其作为一个字符串类型的参数传递给控制器方法。在方法体内部,使用 JSONObject.parseObject 将该参数转换成一个 NewsPolicyRDTO 类型的对象,用于后续的业务逻辑处理。使用 @RequestPart 注解获取名为 "file" 的请求参数,并将其作为一个MultipartFile类型的参数传递给控制器方法。在方法体内部,该参数用于接收客户端上传的文件数据。该参数的 required 属性设置为 false,表示该参数为可选参数。如果客户端没有传递该参数,则该参数的值为 null。
@RequestMapping(value = "/savemation")
@ResponseBody
public Result saveMation(@RequestPart("NewsPolicyRDTO") String newsPolicyRDTO,@RequestPart(name = "file",required = false) MultipartFile file) throws Exception {
NewsPolicyRDTO newsPolicyRDTO1 = JSONObject.parseObject(newsPolicyRDTO,NewsPolicyRDTO.class);
newsService.save(newsPolicyRDTO1,file);
return Result.success();
}
APIPOST测试 其中newsPolicyRDTO的json传跟传输普通类的json串一致的上传方式
3.3文件上传:只传一个类中的数据
若入参为一个类中的所有属性可以使用@RequestBody进行请求处理,表示从请求体中读取数据转化为java对象,@RequestBody使用了SpringMVC内置转换器将请求体中数据转化为java类对象。所以请求体也不需要写类名称,只需要写请求字段即可。一次请求只能有一个@RequestBody,并且只能使用在Post请求上,否则会报错。
@RequestMapping(value = "/querymation",method = RequestMethod.POST)
public Result queryMation(@RequestBody NewsPolicyRDTO NewsPolicyRDTO) throws Exception {
PageResultDTO list=Service.querList(NewsPolicyRDTO);
return Result.success(list);
}
APIPOST测试
3.4文件上传:传输一个类+其他非类中的字段
我们都知道一个请求方法中只能存在一个@RequestBody,那非类中的属性值,不能使用@RequestBody,按照开发规则,其他字段写在后边是没有错误的。
@PostMapping("/queryAllBussinessUer")
public Result queryAll(@RequestBody AreanoPageDTO areanoPageDTO, String name) throws Exception {
UserNumDTO AllListDTOList = UserService.queryAllUser(areanoPageDTO.getAreano(), name);
return Result.success(bussinessAllListDTOList);
}
APIPOST测试
有多个非类属性数据就在两集后边加几个&
其实也可以放到请求体中,例如
{
"areano": "123",
"pageDTO": {
"pageNo": 1,
"pageSize": 10
},
"name": "张三",
}
以战养战