后端项目中swagger组件应用
引入:现在javaweb项目开发,有前端和后端,而且开发是前后端分离开发的 ,前端只开发前端,后端值开发后端。
例如查询操作,前端如何知道后端需要什么样的数据,后端向前端返回怎样的数据。可以通过一个文档,例如后端开发一个文档,登录 账号account,密码password 响应数据 data,code,message,把文档发给前端
但是文档的维护比较麻烦,需求经常改变,文档也就需要不停地修改
swagger组件就是可以自动生成这个文档,在后端通过注解配置,在线生成api文档,可以动态生成,不需要手动去维护文档,并且我们还可以在线进行测试,即就是在线向后端发送请求。
集成实现:先加入jar包,再进行配置,配置如下,在Webconfig类中
一般默认所有的访问后端的请求都会进入到dispatcher servlet(spring mvc第一个步 骤)中,而我们如果只是要一些html,css,js,等等,就不需要进入其中,因为这些请求没有对应的controller,就会报404,所有我们需要对这类请求放行,即就是不需要让他们进入dispatcher servlet中,如我们进行访问swagger动态生成的文档时,就直接访问即可http://localhost:8088/swagger-ui.html 先进行放行操作:
/*一般默认所有的访问后端的请求都会进入到dispatcher servlet
(spring mvc第一个步 骤)中,而我们如果只是要一些html,css,js,等等
,就不需要进入其中,因为这些请求没有对应的controller,就会报404,
所有我们需要对这类请求放行,即就是不需要让他们进入dispatcher
servlet中,如我们进行访问swagger动态生成的文档时,就直接访问即可
http://localhost:8088/swagger-ui.html
放行行前台首页,文章详细信息等地址,都不让其进入dispeatcher servlet中
*/
inter.excludePathPatterns("/swagger*/**"); //放行swagger
inter.excludePathPatterns("/v2/**");//放行swagger
inter.excludePathPatterns("/webjars/**");//放行swagger
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations(
"classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations(
"classpath:/META-INF/resources/webjars/");
}
应用swagger:使用注解标签
主要使用:
@Api,给controller类上面加,用于描述这个类的作用
@ApiOperation,给刚才的类中的方法上面加,用于描述这个方法的作用,方法的参数有两种情况时:参数是一个对象;参数是一个或多个基本类型
@ApiImplicitParams,当参数是一个或多个基本类型时,就加在刚才的方法上即可,如下:
@ApiOperation(value = "查询管理员列表")//实现swagger动态生成文档,该注释用在方法上,说明该方法的作用
@ApiImplicitParams(//实现swagger,这里是对该方法的参数进行了描述
{@ApiImplicitParam(paramType = "query",name = "num",value = "当前页数",required = true,dataType = "Integer"),
@ApiImplicitParam(paramType = "query",name = "pageSize",value = "每页数据个数",required = true,dataType = "Integer")
}
)
@GetMapping(path= "/adminlist/{num}/{pageSize}")
public CommonResult AdminList(@PathVariable("num")Integer num,
@PathVariable("pageSize")Integer pageSize){
方法体}
@ApiModel,当参数是对象时,我们在这个对象的类上面加注解标签,还需要在这个类中的对应属性加入注解标签@ApiModelProperty,如下:
@ApiOperation(value = "登录",notes = "登录访问接口")//实现swagger动态生成文档,该注释用在方法上,说明该方法的作用
@PostMapping(path = "/login")
public CommonResult Login(@RequestBody Admin admin) {方法体}
@ApiModel(value = "管理员实体类")//实现swagger,该注释用在实体类,并且该类当做方法中的参数,该注释用于描述这个类
public class Admin {
@ApiModelProperty(value = "主键")
private Integer id;
@ApiModelProperty(value = "管理员账号")
private String account;
@ApiModelProperty(value = "管理员密码")
private String password;
}
@EnableSwagger2 ,swagger配置,必须加,加在@Api下面即可
版权声明:本文为weixin_52394141原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。