请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

jeesite

 找回密码
 注册新会员
查看: 642|回复: 0

[贴图] swagger2的常用注解,传递参数的注意使用方法@RequestBody

[复制链接]
admin 发表于 2018-7-6 17:05:06 | 显示全部楼层 |阅读模式
https://www.cnblogs.com/fengli9998/p/7921601.html

  1. @ResponseBody
  2.         @RequestMapping(value = "getCombineMine", method = RequestMethod.GET)
  3.         @ApiOperation(value = "getCombineMine", notes = "获取所有煤矿与企业", response = String.class)
  4.         public String getCombineMine(@RequestBody @ApiParam(name = "article", value = "", required = true) Article article) {
  5.                
  6.                
  7.                 System.out.println(JsonMapper.toJsonString(article));
  8.                 return "接口测试成功";
  9.         }
复制代码

背景介绍:
刚开始的时候,在controller层使用@RequestParam的时候,发现这个参数是必须要输入值的,但是我们有时候必须查询的时候允许参数为空,使用这个注解就不行了。
在集成了swagger2后,找了半天的原因,发现使用@ApiImplicitParam这个注解可以解决这个问题。
对应下面的参数。
所以我们可以使用这个注解来解决我们所遇到的参考为空的问题。
而且已经集成了swagger2,所以我们尽量来使用这个注解吧。


说明:
1.这里使用的版本:springfox-swagger2(2.4)springfox-swagger-ui (2.4)
2.这里是说明常用注解的含义和基本用法(也就是说已经对swagger进行集成完成)
没有集成的请参见
SpringBoot集成springfox-swagger2构建restful API
SpringMVC集成springfox-swagger2构建restful API
官网WIKI
常用注解:
- @Api()用于类;
表示标识这个类是swagger的资源
- @ApiOperation()用于方法;
表示一个http请求的操作
- @ApiParam()用于方法,参数,字段说明;
表示对参数的添加元数据(说明或是否必填等)
- @ApiModel()用于类
表示对类进行说明,用于参数用实体类接收
- @ApiModelProperty()用于方法,字段
表示对model属性的说明或者数据操作更改
- @ApiIgnore()用于类,方法,方法参数
表示这个方法或者类被忽略
- @ApiImplicitParam() 用于方法
表示单独的请求参数
- @ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam
具体使用举例说明:
@Api()
用于类;表示标识这个类是swagger的资源
tags–表示说明
value–也是说明,可以使用tags替代
但是tags如果有多个值,会生成多个list
@Api(value="用户controller",tags={"用户操作接口"})@RestControllerpublic class UserController {}
效果图:
@ApiOperation() 用于方法;表示一个http请求的操作
value用于方法描述
notes用于提示内容
tags可以重新分组(视情况而用)
@ApiParam() 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等)
name–参数名
value–参数说明
required–是否必填
@Api(value="用户controller",tags={"用户操作接口"})@RestControllerpublic class UserController {     @ApiOperation(value="获取用户信息",tags={"获取用户信息copy"},notes="注意问题点")     @GetMapping("/getUserInfo")     public User getUserInfo(@ApiParam(name="id",value="用户id",required=true) Long id,@ApiParam(name="username",value="用户名") String username) {     // userService可忽略,是业务逻辑      User user = userService.getUserInfo();      return user;  }}
效果图:
@ApiModel()用于类 ;表示对类进行说明,用于参数用实体类接收
value–表示对象名
description–描述
都可省略
@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改
value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏
@ApiModel(value="user对象",description="用户对象user")public class User implements Serializable{    private static final long serialVersionUID = 1L;     @ApiModelProperty(value="用户名",name="username",example="xingguo")     private String username;     @ApiModelProperty(value="状态",name="state",required=true)      private Integer state;      private String password;      private String nickName;      private Integer isDeleted;      @ApiModelProperty(value="id数组",hidden=true)      private String[] ids;      private List<String> idList;     //省略get/set}

  @ApiOperation("更改用户信息")  @PostMapping("/updateUserInfo")  public int updateUserInfo(@RequestBody @ApiParam(name="用户对象",value="传入json格式",required=true) User user){     int num = userService.updateUserInfo(user);     return num;  }

效果图:
@ApiIgnore()用于类或者方法上,可以不被swagger显示在页面上
比较简单, 这里不做举例
@ApiImplicitParam() 用于方法
表示单独的请求参数
@ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam
name–参数ming
value–参数说明
dataType–数据类型
paramType–参数类型
example–举例说明
  @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(){  }
效果图:


分类: 微服务知识

[color=rgb(255, 255, 255) !important][url=]好文要顶[/url] [color=rgb(255, 255, 255) !important][url=]关注我[/url] [color=rgb(255, 255, 255) !important][url=]收藏该文[/url] [color=rgb(255, 255, 255) !important][url=][/url] [color=rgb(255, 255, 255) !important][url=][/url]

小虾米的java梦
关注 - 22
粉丝 - 90




[url=]+加关注[/url]

0
0





«上一篇:小知识回顾
»下一篇:文件上传与下载总结



posted @ 2017-11-29 17:10 小虾米的java梦 阅读(9573) 评论(3) 编辑 收藏






评论列表

  

#1楼 2018-01-15 19:14 王日生1993

get方法传递参数怎么使用呢
[url=]支持(0)[/url][url=]反对(0)[/url]



  

#2楼 2018-03-07 15:51 HackerRank

@ 王日生1993
get方法的话一样的,会携带在url上面,然后在后端获取就是了
[url=]支持(0)[/url][url=]反对(0)[/url]



  

#3楼 2018-06-05 18:39 这个码农有点冷

我接口返回的数据放在一个bean的属性中。这样生成的文档,只有那个节点,没有节点的详细内容。
例如:
(1)
[size=1em]
1

2

3

4

5

6

7

8

9

10

11

12

@ApiOperation(value = "根据ID查询用户信息",notes = "根据用户ID从数据库中查询用户信息")
    @GetMapping(value = "/user",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public Response queryUser(@ApiParam(name = "id",required = true,value = "用户ID") @RequestParam(value = "id")Integer userId){
        Response<UserBean> response = new Response<>();
        response.setCode(200);
        response.setMsg("请求成功");
        UserBean userBean = new UserBean();
        userBean.setAge(19);
        userBean.setUserName("mac");
        response.setData(userBean);
        return response;
    }





(2)
[size=1em]
1

2

3

4

5

6

7

@ApiModel
public class UserBean {
    @ApiModelProperty("用户名称")
    private String userName;
    @ApiModelProperty("用户年龄")
    private Integer age;
}





(3)
[size=1em]
1

2

3

4

5

6

7

8

9

@ApiModel(value = "响应数据",description = "响应信息")
public class Response<T> {
    @ApiModelProperty("响应码")
    private Integer code;
    @ApiModelProperty("响应信息")
    private String msg;
    @ApiModelProperty("响应数据")
    private  T data;
}






最后生成的接口中,只有code,msg,data这三个信息,没有用户信息 请问这个是为什么






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册新会员

本版积分规则

QQ|手机版|小黑屋|Archiver|jeesite 官方论坛. ( 吉ICP备12004769号  

GMT+8, 2018-11-16 11:00 , Processed in 0.151367 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表