栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot 最细节全面的接口传参接参介绍,总有你喜欢的一种方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot 最细节全面的接口传参接参介绍,总有你喜欢的一种方式

@GetMapping("/getId")

public String requestParamTest( @RequestParam(“idValue”) Integer id) {

return "id: "+id;

}

第四种,可以看到在@RequestParam里面给参数id取名为: idValue,这时候传参时参数名称也需要写成idValue即可。

那么以上四种方式,我推荐第三种,也就是规范地注解命名对应参数名称。

最后给出推荐使用的第三种方式的传接多参例子:

@GetMapping("/getIdAny")

public String requestParamTestAny( @RequestParam(“id”) Integer id,@RequestParam(“name”) String name,@RequestParam Integer age) {

return "**id: “+id+” **name: “+name+” **age: "+age;

}

调用结果(http://localhost:8023/getIdAny?id=1002&name=JCccc&age=10):

上传文件

针对使用@RequestParam,补充一下上传文件的是需要注意的以及方式:

简单示例一下怎么接收以及传递文件(使用MultipartFile接收):

@ResponseBody

@PostMapping(“upload”)

public String upload(@RequestParam(“myFile”) MultipartFile file) {

return “—file name:” + file.getOriginalFilename()+

“—file type:” + file.getContentType()+

“—file size:” + file.getSize();

}

@RequestBody

PS:对应RequestBody的使用,方式其实是比较多的,可以耐心看看,传参以json格式传递,接收方式较多(一定要记住Content-Type为application/json


通过实体类接参的方式:

User.java:

![](https://img-blog.csdnimg.cn/

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

20190830110000114.png)

PS:Get 方式 和 Post方式 其实都是可以有requestBody的,只不过一般来说post用的较多(后面都用post方式举例)。

@GetMapping("/getRequestBodyValue")

public String RequestBodyTest(@RequestBody User user) {

return user.toString();

}

调用结果:

通过Map接参的方式:

单独获取参通过map的get方法根据key获取即可

@PostMapping("/getRequestBodyValue")

public String RequestBodyTest(@RequestBody Map userMap) {

return userMap.toString();

}

调用结果:

通过JsonObject接参的方式:

这里用到了fastjson的依赖包:

com.alibaba

fastjson

1.2.7

@PostMapping("/getRequestBodyValue")

public String RequestBodyTest(@RequestBody JSonObject jsonObject) {

Integer id = jsonObject.getInteger(“id”);

String name = jsonObject.getString(“name”);

Integer age = jsonObject.getInteger(“age”);

return “—id:”+id+" —name:"+name+" —age:"+age;

}

调用结果:

通过String接参数的方式:

这种情况是先使用String把body里面的数据获取出来,再转换成jsonobject再进行参数解析

@PostMapping("/getRequestBodyValue")

public String RequestBodyTest(@RequestBody String jsonStr) {

JSonObject jsonObject= JSON.parseObject(jsonStr); //将jsonStr转化为JSONObject,再进行取值

Integer id = jsonObject.getInteger(“id”);

String name = jsonObject.getString(“name”);

Integer age = jsonObject.getInteger(“age”);

return “—id:”+id+" —name:"+name+" —age:"+age;

}

调用结果:

另外补充这种没有通过json格式传参的,以实体类传参接参方式:

举例使用User实体类,User.java:

@GetMapping("/getValue")

public String entityValueTest( User user) {

return user.toString();

}

调用方式(参数名需与实体类字段名报持一致):

全部参数都传,

只传部分参数,

@RequestHeader:


这是取出放在header里面的值,如:

@ResponseBody

@RequestMapping("/getMyHeaderParam")

public String getOrderList(@RequestHeader String token,@RequestHeader String uuid) {

return “----token:”+token+"— uuid:"+uuid;

}

HttpServletRequest :


@GetMapping("/getHttpServletRequest")

public String httpServletRequestValueTest(HttpServletRequest request) {

String id = request.getParameter(“id”);

String name = request.getParameter(“name”);

String age = request.getParameter(“age”);

return “—id:”+id+" —name:"+name+" —age:"+age;

}

@GetMapping("/getHttpServletRequest")

public String httpServletRequestValueTest(HttpServletRequest request) {

Map parameterMap = request.getParameterMap();

String[] ids = parameterMap.get(“id”);

String[] names = parameterMap.get(“name”);

String[] ages = parameterMap.get(“age”);

String id = ids[0];

String name =names[0];

String age =ages[0];

return “—id:”+id+" —name:"+name+" —age:"+age;

}

以上两种方式调用结果:

通过HttpServletRequest 获取body里面的json数据:

(其实这种方式是较为麻烦的,不太推荐,还不如使用上面提到的@RequestBody好了)

@PostMapping("/getHttpServletRequest")

public String get(HttpServletRequest request) throws IOException {

BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));

String str = “”;

String wholeStr = “”;

//一行一行的读取body体里面的内容

while((str = reader.readLine()) != null){

wholeStr += str;

}

//转化成JSONObject

JSonObject jsonObject=JSONObject.parseObject(wholeStr);

Integer id = jsonObject.getInteger(“id”);

String name = jsonObject.getString(“name”);

Integer age = jsonObject.getInteger(“age”);

return “—id:”+id+" —name:"+name+" —age:"+age;

}

调用结果:

OK,各种方式获取参数介绍就到此。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/671438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号