swagger中文“拽”的意思。它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试。另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字。
<!-- swagger2与swagger-ui同一版本 -->
<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>
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;
/**
* Swagger核心配置文件
* ========================
* @author BianP
* Date:2018/1/30
* Time:23:07
* ========================
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
public static String CONTROLLER_URL="com.lazy.develop.controller"; //Swagger扫描的接口路径
public static String SWAGGER_TITLE="JAVA懒开发-SWAGGER的使用"; //Swagger接口文档标题
public static String SWAGGER_DESCRIPTION="swagger打造不一样的API"; //Swagger接口文档描述
public static String SWAGGER_VERSION="1.0"; //Swagger接口文档版本
public static String SWAGGER_URL="http://127.0.0.1:8080"; //Swagger项目服务的URL
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage(CONTROLLER_URL))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(SWAGGER_TITLE)
.description(SWAGGER_DESCRIPTION)
.termsOfServiceUrl(SWAGGER_URL)
.version(SWAGGER_VERSION)
.build();
}
}
这个时候Swagger2的整合就已经完成了,只需要在接口类和实体类中加注解就好了
@Api(description = "用户模块",value="用户。。" )
@RestController
@RequestMapping("/user")
public class UserController {
Logger logger = Logger.getLogger(UserController.class);
@Autowired
public UserService userServiceImpl;
/**
* @explain 获取用户
* @param 用户ID:id
* @return User
* @author BianP
*/
@ApiIgnore//使用该注解忽略这个API
@RequestMapping(value="/getUserRolePage", method = RequestMethod.GET)
public List<Record> getUserRolePage(HttpServletRequest request){
Record record=new Record(request);
//record.put("name", "name"); //和普通的map使用一样
//String name=record.getString("name");
//Integer id=record.getInteger("id");
//Long id2=record.getLong("id");
//Object obj=record.get("user"); //目前就写了这几个,大家可以根据自己的需求改哈
List<Record> user = userServiceImpl.getUserRolePage(record);
return user;
}
/**
* @explain 获取所有用户 <swagger POST请求>
* @param 对象参数:swaggerTest
* @return List<User>
* @author BianP
*/
@ApiOperation(value = "获取所有用户", notes = "查询所有用户")
@RequestMapping(value="/getUserAll_POST", method = RequestMethod.POST)
public List<User> getUserAll_POST(SwaggerTest swaggerTest){
List<User> user = userServiceImpl.getUserAll();
return user;
}
/**
* @explain 获取所有用户 <swagger get请求>
* @param 对象参数:swaggerTest
* @return List<User>
* @author BianP
*/
@ApiOperation(value = "获取所有用户", notes = "查询所有用户")
@RequestMapping(value="/getUserAll_GET", method = RequestMethod.GET)
public List<User> getUserAll_GET(SwaggerTest swaggerTest){
List<User> user = userServiceImpl.getUserAll();
return user;
}
/**
* @explain 获取所有用户 <swagger 链接参数与请求Body参数>
* @param 用户ID:id,对象参数:swaggerTest
* @return List<User>
* @author BianP
*/
@ApiOperation(value = "获取所有用户", notes = "查询所有用户")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "用户ID", required = true, dataType = "Long",paramType = "path"),
@ApiImplicitParam(name = "swaggerTest", value = "swagger测试参数对象", required = true, dataType = "SwaggerTest")
})
@RequestMapping(value="/getUserAll_POST/{ids}", method = RequestMethod.POST)
public List<User> getUserAll_POST2(@PathVariable Long ids, @RequestBody SwaggerTest swaggerTest){
List<User> user = userServiceImpl.getUserAll();
return user;
}
}
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class SwaggerTest {
@ApiModelProperty(name = "id" , value = "用户ID")
private Long id;
@ApiModelProperty(name = "loginName" , value = "用户登录名")
private String loginName;
@ApiModelProperty(name = "password" , value = "用户密码")
private String password;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(name = "createTime" , value = "用户创建时间")
private Date createTime;
}
到这就整合玩了................................................
输入http://127.0.0.1:8080/swagger-ui.html
swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。