整合Swagger-UI

Swagger-UI

1 概述

Swagger-UI是HTML, Javascript, CSS的一个集合,可以动态地根据注解生成在线API文档。

常用注解

  • @Api:用于修饰Controller类,生成Controller相关文档信息
  • @ApiOperation:用于修饰Controller类中的方法,生成接口方法相关文档信息
  • @ApiParam:用于修饰接口中的参数,生成接口参数相关文档信息
  • @ApiModelProperty:用于修饰实体类的属性,当实体类是请求参数或返回结果时,直接生成相关文档信息

2 整合

1. 添加依赖

<!--Swagger-UI API文档生产工具-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>

2. 配置

@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //为当前包下controller生成API文档
                //.apis(RequestHandlerSelectors.basePackage("com.macro.mall.tiny.controller"))
                //为有@Api注解的Controller生成API文档
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                //为有@ApiOperation注解的方法生成API文档
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("ONE商城接口文档")
                .description("本文档为ONE商城后端api接口规范。")
                .contact("qingcai")
                .version("1.0")
                .build();
    }
}

3 添加Swagger注解

需要为控制器和实体类添加相关注解,参考

@Api(value = "UserController",tags = {"用户管理"})
@RestController
@Slf4j
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 登录
     */
    @ApiOperation("用户登录")
    @PostMapping("/login")
    public ResultDTO<Map<String,Object>> login(@RequestBody User param){
        log.debug("-----------------------> 登录:" + param);
        User user = userService.login(param);
        if(user != null){
            Map<String,Object> data = new HashMap<>();
            data.put("token","admin");
            return new ResultDTO<>(20000,"登录成功",data);
        }else{
            return new ResultDTO<>(20001,"用户名或密码错误",null);
        }
    }

    /**
     * 获取用户信息
     * @param token
     * @return
     */
    @ApiOperation("获取用户信息")
    @GetMapping("/info")
    public ResultDTO<Map<String,Object>> getEmpInfo(@RequestParam("token") String token){
        log.debug("-----------------------> 获取用户token:" + token);
        Map<String, Object> data = userService.getUserInfo(token);
        return  new ResultDTO<>(20000,"获取用户信息成功",data);
    }

    @ApiOperation("用户退出")
    @PostMapping("/logout")
    public ResultDTO<Map<String,Object>> logout(){
        return  new ResultDTO<>(20000,"操作成功",null);
    }

    @ApiOperation("用户列表查询")
    @PostMapping("/list/{pageNo}/{pageSize}")
    public ResultDTO<Map<String,Object>> getUserList(@RequestBody User param,@PathVariable("pageNo") Integer pageNo,@PathVariable("pageSize") Integer pageSize){
        Page<List<User>> result = userService.getUserList(param,pageNo,pageSize);
        Map<String,Object> data = new HashMap<>();
        data.put("total",result.getTotal());
        data.put("rows",result.getResult());
        return  new ResultDTO<>(20000,"查询成功",data);
    }

    @ApiOperation("新增用户")
    @PostMapping("")
    public ResultDTO<Object> addUser(@RequestBody User param){
        userService.addUser(param);
        return  new ResultDTO<>(20000,"新增成功",null);
    }

    @ApiOperation("修改用户")
    @PutMapping("")
    public ResultDTO<Object> updateUser(@RequestBody User param){
        userService.updateUser(param);
        return  new ResultDTO<>(20000,"修改成功",null);
    }

    @ApiOperation("修改用户状态")
    @PutMapping("/status/{userId}/{status}")
    public ResultDTO<Object> updateUserStatus(@PathVariable("userId") Integer userId,
                                              @PathVariable("status") Integer status){
        User param = User.builder().userId(userId).status(status).build();
        userService.updateUser(param);
        return  new ResultDTO<>(20000,"修改状态成功",null);
    }

    @ApiOperation("删除用户")
    @DeleteMapping("/{id}")
    public ResultDTO<Object> deleteUserById(@PathVariable("id") Integer id){
        userService.deleteUserById(id);
        return  new ResultDTO<>(20000,"删除成功",null);
    }

    @ApiOperation("查询用户")
    @GetMapping("/{id}")
    public ResultDTO<User> getUserById(@PathVariable("id") Integer id){
        User user = userService.getUserById(id);
        return  new ResultDTO<>(20000,"查询成功",user);
    }

    @ApiOperation("获取角色列表")
    @GetMapping("/role")
    public ResultDTO<List<Role>> getRoleList(){
        List<Role> roleList = userService.getRoleList();
        return  new ResultDTO<>(20000,"查询成功",roleList);
    }
}
@Data
@Table(name = "one_user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @ApiModelProperty("用户id")
    private Integer userId;
    @ApiModelProperty("用户名")
    private String username;
    @ApiModelProperty("密码")
    private String password;
    @ApiModelProperty("邮箱")
    private String email;
    @ApiModelProperty("电话")
    private String phone;
    @ApiModelProperty("状态")
    private Integer status;
    @ApiModelProperty("角色id")
    private Integer roleId;
    @Transient
    private Role role;
}

4 查看接口文档

需要运行项目,访问

http://localhost:9999/onemall/swagger-ui.html
在这里插入图片描述
还能直接测试哦,比如
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot项目中整合Swagger UI,可以按照以下步骤进行操作: 1. 在项目的Maven或Gradle配置中添加Swagger依赖,例如: ```xml <!-- Maven --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> ``` ```groovy // Gradle implementation 'io.springfox:springfox-boot-starter:3.0.0' ``` 2. 创建一个配置类(例如`SwaggerConfig`)并添加`@Configuration`和`@EnableSwagger2`注解,示例如下: ```java import springfox.documentation.swagger2.annotations.EnableSwagger2; import org.springframework.context.annotation.Configuration; @Configuration @EnableSwagger2 public class SwaggerConfig { // 配置内容 } ``` 3. 在配置类中,可以使用`Docket`来配置Swagger的基本信息,例如设置API的标题、描述等,示例如下: ```java import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.RequestHandlerSelectors; import org.springframework.context.annotation.Bean; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.example.controllers")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API Documentation") .description("API Documentation for my project") .version("1.0.0") .build(); } } ``` 4. 启动项目,访问`http://localhost:8080/swagger-ui.html`即可查看Swagger UI界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值