先创建springboot项目,后在pom里添加依赖swagger2和SwaggerBootstrapUI的依赖。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.1</version>
</dependency>
新建配置类 SwaggerConfiguration
注意
package com.wuf.swagger.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import org.springframework.context.annotation.Bean;
//添加为自己的包名
@ComponentScan("com.wuf.swagger.controller")
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
//在apis中添加自己的包名
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.wuf.swagger.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("swagger-bootstrap-ui RESTful APIs")
.description("swagger-bootstrap-ui")
.termsOfServiceUrl("http://localhost:8080/")
.contact("wuf@citydo.com.cn")
.version("1.0")
.build();
}
}
在Controller类上增加swagger配置
package com.wuf.swagger.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wuf.swagger.common.ServerResponse;
import com.wuf.swagger.pojo.User;
import com.wuf.swagger.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(value = “用户管理”, description = “用户管理API”, position = 100, protocols = “http”)
@RestController
@RequestMapping("/user")
public class UserManageController {
@Autowired
private UserService userService;
@ApiOperation(value = "创建用户", notes = "根据User对象创建用户")
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "age", value = "年龄", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "email", value = "邮箱", required = false, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "phone", value = "联系方式", required = false, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "question", value = "邮箱", required = false, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "answer", value = "答案", required = false, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "role", value = "角色", required = false, dataType = "String", paramType = "query")
})
@RequestMapping(value = "/register", method = RequestMethod.POST)
@ResponseBody
public ServerResponse register(@RequestParam String username,
@RequestParam String password,
@RequestParam Integer age,
@RequestParam String email,
@RequestParam String phone,
@RequestParam String question,
@RequestParam String answer,
@RequestParam Integer role) {
userService.register(username, password, age, email,phone,question,answer,role);
return ServerResponse.success(null,"注册成功");
}
@ApiOperation("用户删除")
@RequestMapping(value = "/delete",method = RequestMethod.DELETE)
public ServerResponse delete(@RequestParam String username){
return ServerResponse.success(null,"删除成功");
}
@ApiOperation("获取全部用户信息")
@RequestMapping(value = "/getall",method = RequestMethod.GET)
public ServerResponse<IPage<User>> getAll(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@RequestParam(value = "pageSize", defaultValue = "5") int pageSize){
IPage<User> users = userService.getAll(pageNum,pageSize);
return ServerResponse.success(users);
}
@ApiOperation(value="通过用户名获取单个用户信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String", paramType = "query")
})
@RequestMapping(value = "/get_user_name",method = RequestMethod.POST)
public ServerResponse<User> getUser(@RequestParam String userName){
User user = new User();
user = userService.getByName(userName);
return ServerResponse.success(user);
}
@ApiOperation(value="修改单个用户信息",notes = "修改用户信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "age", value = "年龄", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "email", value = "邮箱", required = false, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "phone", value = "联系方式", required = false, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "question", value = "邮箱", required = false, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "answer", value = "答案", required = false, dataType = "String", paramType = "query")
})
@RequestMapping(value = "/update",method = RequestMethod.POST)
public ServerResponse<User> updateUser(@RequestParam String username,
@RequestParam Integer age,
@RequestParam String email,
@RequestParam String phone,
@RequestParam String question,
@RequestParam String answer){
User user = new User();
user = userService.updateUser(username,age,email,phone,question,answer);
return ServerResponse.success(user,"修改成功");
}
}
以上配置完成之后,直接启动项目,访问地址:localhost:8080/doc.html,即可打开如下页面
swagger-bootstrap-ui官方文档地址
https://doc.xiaominfo.com/
swagger-bootstrap-ui注解
原文链接:https://blog.csdn.net/KingBoyWorld/article/details/104012507
- 注解说明
Swagger的使用注解有很多,这里我们只讲最常用的注解,以及这些注解中最常用的属性。
@Api(tags = {“用户操作”})
加在controller类上
tags表示该类的标签,在页面会独立显示一个菜单
@ApiOperation(value = “保存用户”, notes = “保存时,ID由数据库生成,无需填写,有则忽略”, tags = “保存”)
加在相应的请求处理方法上
value表示该方法的说明
notes相当于对该方法的详细说明,也就是更加完整的描述
tags 表示标签,,在页面会独立显示一个菜单
@ApiImplicitParam(name = “id”, value = “用户ID”, defaultValue = “1”)
方法只有一个基本类型参数时加在方法上。方法有多个参数时加在@ApiImplicitParams内
name 参数中属性的名字
value 对这个属性的描述
defaultValue 默认值,这个还是有必要填写的,在页面进行请求时,会自动填充
@ApiImplicitParams(value = {})
用在请求方法上
这个注解必须和@ApiImplicitParam配合使用
当请求方法中的请求参数很多的时候,例如saveUser(String username, Integer age, Date birthday, String phone)
@ApiParam(value = “当前页”, defaultValue = “1”)
加在请求方法的普通参数上
value的值是对该参数的说明
与@ApiImplicitParam使用的效果等同,根据个人喜好进行使用
@ApiModel(value = “用户信息”)
加在请求方法的对象类上
value 对该对象参数的描述
例如有一个请求方法save(UserDTO userDTO), 则需要加在UserDTO这个类上面(可以参照下面的示例)
@ApiModelProperty(value = “用户ID”, example = “1”)
加在请求方法的参数对象的属性上
value 对该属性的描述
example 属性的示例值,在页面会自动填充该值