1、前言
2、导入依赖
<!-- swagger所需要的依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
<!-- 这个依赖是为了渲染swagger文档页面的( 为了好看一点罢了 ) ,swagger真正的依赖是上面两个-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
4、编写swagger配置文件
package cn.xiegongzi.config;
import org.springframework.context.annotation.Bean;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration // 把当前类丢到spring容器中去
@EnableSwagger2 // 开启swagger功能
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
// http://ip地址:端口/项目名/swagger-ui.html#/
ApiInfo apiInfo = new ApiInfoBuilder()
.title( "悠忽有限公司" ) // 网站标题 即:生成的文档网址标题
.description( "这是一个很nice的接口文档" ) // 网站描述 即:对生成文档的描述
.version( "9.0" ) // 版本
.contact( new Contact("紫邪情","https://www.cnblogs.com/xiegongzi/","110" ) ) // 联系人
.license( "tcp" ) // 协议 http / https都可以
.licenseUrl( "http://localhost:8080/" ) // 协议url 即:进入到swagger文档页面的地址
.build();
return new Docket( DocumentationType.SWAGGER_2 ) // swagger版本
.pathMapping( "/" ) // 请求映射路径 就是:controller中有一个接口,然后前台访问的那个接口路径
// 这个可以在生成的文档中进行调试时看到
.select() // 根据pathMapping去进行查询( 做相应的操作 )
// 扫描包 即:哪些地方可以根据我们的注解配置帮我们生成文档
.apis( RequestHandlerSelectors.basePackage( "cn.xiegongzi" ) )
.paths( PathSelectors.any() )
.build()
.apiInfo( apiInfo );
}
}
5、编写yml文件
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_spring?useUnicode=true&characterEncoding=utf-8
username: root
password: "072413"
6、编写实体类
package cn.xiegongzi.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel // 表明这个实体类也可以生成到swagger文档中去 即:后台要接收的参数是一个对象时使用 —— 这个东西可以先不加,在做增加、修改时可以用这个测试一下,从而去swagger中看效果
public class User implements Serializable {
@ApiModelProperty // 表明:要生成的实体类属性是注解下的这个
private Integer id;
@ApiModelProperty
private String username;
@ApiModelProperty
private String phone;
}
7、编写mapper
package cn.xiegongzi.mapper;
import cn.xiegongzi.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface IUserMapper {
@Select("select * from user")
List<User> findAllUser();
}
8、编写service接口和实现类
9、编写controller
package cn.xiegongzi.controller;
import cn.xiegongzi.service.IUserService;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Api(tags = "用户管理接口集") // 表示当前类可以被生成一个swagger文档 , 可以跟参数tags,参数表示:这整个接口类的名字
public class UserController {
@Autowired
private IUserService userService;
// @ApiImplicitParam 这个注解是对请求参数做限制用的,如:请求时要求前台传递一个id,那么:在这个注解里面:就可以声明这个参数的类型、
// 是否为必填.....
@GetMapping("/swaggger/doc") // 遵循restful风格 要是使用@RequestMapping的话,会生成多个接口( 即:对应post、get.... )
@ApiOperation(value = "获取全部用户接口" , notes = "获取全部的用户")
// value这个接口的名字
// 对这个接口的描述
public String findAllUser() {
return JSON.toJSONString( userService.findAllUser() );
}
}
10、启动项目,测试
结语:
- 以上的内容是入门,其他的注解开发时自行摸索吧!
- 还有一种,比swagger更好,就是:postman,自行下载安装包,安装之后玩一下