千家信息网

如何使用@ApiImplicitParams、ApiImplicitParam

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"如何使用@ApiImplicitParams、ApiImplicitParam",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使
千家信息网最后更新 2026年11月01日如何使用@ApiImplicitParams、ApiImplicitParam

这篇文章主要讲解了"如何使用@ApiImplicitParams、ApiImplicitParam",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用@ApiImplicitParams、ApiImplicitParam"吧!

目录
  • @ApiImplicitParam

    • 参数

    • 类型 作用

  • @ApiImplicitParams

    • paramType 示例详解

    • 小结一下

    • 测试

@ApiImplicitParam

作用在方法上,表示单独的请求参数

参数

  • name:参数名。

  • value:参数的具体意义,作用。

  • required:参数是否必填。

  • dataType:参数的数据类型。

  • paramType:查询参数类型,这里有几种形式:

类型 作用

  • path 以地址的形式提交数据

  • query 直接跟参数完成自动映射赋值

  • body 以流的形式提交 仅支持POST

  • header 参数在request headers 里边提交

  • form 以form表单的形式提交 仅支持POST

在这里我被坑过一次:当我发POST请求的时候,当时接受的整个参数,不论我用body还是query,后台都会报Body Missing错误。

这个参数和SpringMvc中的@RequestBody冲突,索性我就去掉了paramType,对接口测试并没有影响。

@ApiImplicitParams

用于方法,包含多个 @ApiImplicitParam:

例:

@ApiOperation("查询测试")@GetMapping("select")//@ApiImplicitParam(name="name",value="用户名",dataType="String", paramType = "query")@ApiImplicitParams({@ApiImplicitParam(name="name",value="用户名",dataType="string", paramType = "query",example="xingguo"),@ApiImplicitParam(name="id",value="用户id",dataType="long", paramType = "query")})public void select(){}

paramType 示例详解

path

@RequestMapping(value = "/findById1/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)@PathVariable(name = "id") Long id

body

@ApiImplicitParams({ @ApiImplicitParam(paramType = "body", dataType = "MessageParam", name = "param", value = "信息参数", required = true) })@RequestMapping(value = "/findById3", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)@RequestBody MessageParam param

提交的参数是这个对象的一个json,然后会自动解析到对应的字段上去,也可以通过流的形式接收当前的请求数据,但是这个和上面的接收方式仅能使用一个(用@RequestBody之后流就会关闭了)

header

@ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "Long", name = "id", value = "信息id", required = true) })String idstr = request.getHeader("id");if (StringUtils.isNumeric(idstr)) {id = Long.parseLong(idstr);}

Form

@ApiImplicitParams({ @ApiImplicitParam(paramType = "form", dataType = "Long", name = "id", value = "信息id", required = true) })@RequestMapping(value = "/findById5", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)

小结一下

(1)对于@ApiImplicitParam的paramType:query、form域中的值需要使用@RequestParam获取, header域中的值需要使用@RequestHeader来获取,path域中的值需要使用@PathVariable来获取,body域中的值使用@RequestBody来获取,否则可能出错;而且如果paramType是body,name就不能是body,否则有问题,与官方文档中的"If paramType is "body", the name should be "body"不符。

  • @ApiImplicitParams:用在方法上包含一组参数说明

  • @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面

  • paramType:参数放在哪个地方

  • header-->请求参数的获取:@RequestHeader

  • query-->请求参数的获取:@RequestParam

  • path(用于restful接口)-->请求参数的获取:@PathVariable

  • body(不常用)

  • form(不常用)

  • name:参数名

  • dataType:参数类型

  • required:参数是否必须传

  • value:参数的意思

  • defaultValue:参数的默认值

  • @ApiResponses:用于表示一组响应

  • @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

  • code:数字,例如400

  • message:信息,例如"请求参数没填好"

  • response:抛出异常的类

  • 以上这些就是最常用的几个注解了。

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestHeader;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import io.swagger.annotations.Api;import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiImplicitParams;import io.swagger.annotations.ApiOperation;import io.swagger.annotations.ApiResponse;import io.swagger.annotations.ApiResponses;@RestController@RequestMapping("/user")@Api("userController相关api")public class UserController {@Autowiredprivate UserService userService;@ApiOperation("获取用户信息")@ApiImplicitParams({@ApiImplicitParam(paramType="header",name="username",dataType="String",required=true,value="用户的姓名",defaultValue="zhaojigang"),@ApiImplicitParam(paramType="query",name="password",dataType="String",required=true,value="用户的密码",defaultValue="wangna")})@ApiResponses({@ApiResponse(code=400,message="请求参数没填好"),@ApiResponse(code=404,message="请求路径没有或页面跳转路径不对")})@RequestMapping(value="/getUser",method=RequestMethod.GET)public User getUser(@RequestHeader("username") String username, @RequestParam("password") String password) {return userService.getUser(username,password);}}

测试

启动服务,浏览器输入"http://localhost:8080/swagger-ui.html"

在上面案例中我们可以知道如果在request域中我们使用reques.getHeader()和使用@RequestHeader注解作用是一样的,其它内容类似。

  • @ApiResponses:用于表示一组响应

  • @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

  • code:数字,例如400

  • message:信息,例如"请求参数没填好"

  • response:抛出异常的类

@ApiOperation("获取用户信息")@ApiImplicitParams({@ApiImplicitParam(paramType="header",name="name",dataType="String",required=true,value="用户的姓名",defaultValue="zhaojigang"),@ApiImplicitParam(paramType="query",name="pwd",dataType="String",required=true,value="用户的密码",defaultValue="wangna")})@ApiResponses({ @ApiResponse(code=400,message="请求参数没填好"),@ApiResponse(code=404,message="请求路径没有或页面跳转路径不对")})@RequestMapping(value="/getUser",method= RequestMethod.GET)public User getUser(@RequestHeader("name") String name,@RequestParam("pwd") String pwd) {System.out.println(name);System.out.println(pwd);return userRepository.getUserByNameAndPwd(name,pwd);}

感谢各位的阅读,以上就是"如何使用@ApiImplicitParams、ApiImplicitParam"的内容了,经过本文的学习后,相信大家对如何使用@ApiImplicitParams、ApiImplicitParam这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

参数 信息 用户 作用 形式 类型 路径 测试 内容 常用 数据 方法 注解 错误 学习 不对 姓名 密码 小结 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 广州为想互联网科技有限公司 今日互联网科技 互联网科技垄断 互联网科技作文 上海致骋互联网科技 上海亿帐通互联网科技 华脉科技工业互联网产品 哈尔滨新华互联网科技学院 江阴互联网智能科技产品进口 苏州铭阳互联网科技有限公司 互联网科技大奖都有哪些公司 互联网科技和法律行业 每天都有哪些好的互联网科技 南通创西澳互联网科技有限公司 雨阳互联网卡科技有限公司 济南小医互联网科技有限公司招聘 广州三三互联网科技有限公司 科技发展第三阶段互联网时代 小牛互联网科技有限公司地址 镁科技互联网资讯平台 佩信高科技互联网 互联网科技公司需要的职位 现代科技和互联网有关系吗 青岛中康互联网医疗科技有限公司 广州市恰铎互联网科技有限公司 张召忠谈中国互联网科技 35岁以上互联网科技行业 广东猫王互联网科技有限公司电话 互联网科技快速发展优美句子
0