口水话(急于集成的可以直接看下面集成代码):
之前测试接口,模块测试呢,一直用的是junit,用的时候还要自己去写对应代码。。。写完下来有比较耗时,而且又要删掉。个人不太喜欢 太复杂了
而且当同事需要用你这个接口的时候呢,还要打开你的代码去看你这个方法有哪些必传参数啥的。
swagger呢,就很方便了基于Restful风格 。当前端同事或者客户需要调你的接口时,浏览器打开swagger就知道怎么使用。很nice。
下面我们来开始集成
我的工程是springboot+spring+mybytis
先添加jar包依赖:
<!-- swagger2 -->
<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>
依赖添加完后,就可以直接去写类配置启用了不需要到application.yml写关于swagger的任何配置
直接写类通过注解开启swagger配置:
package com.house.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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2 // 启用Swagger2
public class Swagger2Config {
// 访问地址:http://localhost:8080/swagger-ui.html
// 创建API基本信息
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 扫描该包下的所有需要在Swagger中展示的API,@ApiIgnore注解标注的除外
.apis(RequestHandlerSelectors.basePackage("com.house.controller"))
.paths(PathSelectors.any())
.build();
}
// 创建API的基本信息,这些信息会在Swagger UI中进行显示
@SuppressWarnings("deprecation")
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("uni_house接口文档") // API 标题 (访问swagger2的最上面标题)
.description("xxx管理平台服务接口") // API描述 (API描述)
.contact("[email protected]") // 联系人
.version("1.0") // 版本号
.build();
}
}
ok Swagger已经配好了。就等我们去用他了。来,我继续贴代码
注意这里的是pojo类
package com.house.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(description = "用户详细信息")
@Data // 注意 这个是消除模板代码lomback包里面的注解 有需要的可以从我的下篇文章获取。或者去maven官网下
public class Person {
@ApiModelProperty(value = "用户Id", position = 1)
private Long id;
@ApiModelProperty(value = "用户年龄", position = 2)
private int age;
@ApiModelProperty(value = "用户姓名", position = 3)
private String name;
@ApiModelProperty(value = "用户所在城市", position = 4)
private String city;
public Person(Long id,int age,String name,String city){
this.id=id;
this.age=age;
this.city=city;
this.name=name;
}
}
ok pojo已经完成 现在我们去写controller对外API接口
来我继续贴代码:
package com.house.controller;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.house.vo.Person;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@Api(tags = "用户相关接口")
@RestController
@RequestMapping(value = "/user")
public class PersonController {
@ApiOperation(value = "用户详细信息", notes = "通过id获得用户详细信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "用户ID", required = true, paramType = "query", defaultValue = "0")})
@GetMapping("/query")
public Person getById(@RequestParam(value="id",defaultValue = "0") Long id){
return new Person(id,2,"小小","杭州");
}
//分页列表
@ApiOperation(value = "删除用户信息", notes = "通过ID删除用户信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "用户ID", required = true, paramType = "query", defaultValue = "0")})
@RequestMapping(value="delete",method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE )
public String delete(@RequestParam(value="id",defaultValue = "0") Long id){
return "删除成功";
}
}
至此所有swagger配置已完成
让我们来看看效果:
有哪里不会的可以给我留言,我看到会回复。或者哪里还可以优化,还请大佬指出!
点个赞再走吧,谢谢!