1.添加必要的依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency>
注意:尽量使用较新的版本,因为在实际开发过程中,有些api文档中的一些细节控制低版本不支持,比如控制一个实体属性在api文档上不展示。
2.编写对应Swagger的配置类
package com.tufire.seller.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; /** * Swagger配置类,为所有的controller生成访问的API文档 * 本地访问地址:http://localhost:{server.port}/swagger-ui.html * */ @Configuration @EnableSwagger2 public class SwaggerConfig { private static final String CONTROLLER_PACKAGE = "控制层根目录"; @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).groupName("API名称描述").apiInfo(apiInfo()).select() .apis(RequestHandlerSelectors.basePackage(CONTROLLER_PACKAGE)).paths(PathSelectors.any()).build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder().title("API名称描述").contact(new Contact("", "", "联系人邮箱地址")).version("1.0").build(); } }
3.控制层进行定义API接口的各种描述
package com.tufire.seller.api.user; import com.tufire.common.util.ObjectUtil; import com.tufire.common.util.Result; import com.tufire.seller.api.basic.BasicApi; import com.tufire.seller.query.user.DistrictQuery; import com.tufire.user.client.DistrictClient; import com.tufire.user.dto.DistrictDto; import com.tufire.user.vo.commmon.DistrictVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.List; @Api(value = "地区相关接口", tags = "地区相关接口") @RestController @RequestMapping("/authc/district/") @Slf4j public class DistrictApi extends BasicApi { @Autowired private DistrictClient districtClient; @ApiOperation(value = "获取地区信息列表", notes = "获取地区信息列表",produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @RequestMapping(value = "find_list",method = RequestMethod.POST) public Result<List<DistrictVo>> findList(@ModelAttribute DistrictQuery query){ DistrictDto districtDto = ObjectUtil.source2Target(query, DistrictDto.class); return Result.generateSuccess(districtClient.findList(districtDto)); } }
4.访问自己的API接口文档
http://localhost:8092/swagger-ui.html#/
5.API通常的界面风格就如上面的效果,有没有更好的界面展示风格呢,答案是肯定的!
在原有项目的基础上增加如下依赖:
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.8.7</version> </dependency>
现在访问如下地址:
http://localhost:8092/doc.html
第4和第5两种方式是兼容的,仅仅是UI展示效果不同。