您的位置:首页 > 编程语言 > Java开发

SwaggerUI自动生成API文档(SwaggerUI+SpringBoot)

2016-11-02 10:29 1516 查看
SwaggerUI+SpringBoot




测试访问地址http://localhost:8080/v1/swagger-ui.html#/
下面是具体配置



Maven依赖

<!--Swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<!--ENDSwagger-->
[/code]



properties

server.servlet-path=/v1
[/code]



Config

packagecom.unioncast.db.config;
importstaticcom.google.common.base.Predicates.or;
importstaticspringfox.documentation.builders.PathSelectors.regex;
importorg.springframework.beans.factory.annotation.Value;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.http.ResponseEntity;
importcom.google.common.base.Predicate;
importcom.google.common.base.Predicates;
importspringfox.documentation.builders.PathSelectors;
importspringfox.documentation.service.ApiInfo;
importspringfox.documentation.spi.DocumentationType;
importspringfox.documentation.spring.web.plugins.Docket;
/**
*SwaggerConfig
*/
@Configuration
publicclassSwaggerConfig{
@Value("${server.servlet-path}")
privateStringpathMapping;
privateApiInfoinitApiInfo(){
ApiInfoapiInfo=newApiInfo("数据存储项目PlatformAPI",//大标题
initContextInfo(),//简单的描述
"1.0.0",//版本
"服务条款","后台开发团队",//作者
"TheApacheLicense,Version2.0",//链接显示文字
"http://www.baidu.com"//网站链接
);
returnapiInfo;
}
privateStringinitContextInfo(){
StringBuffersb=newStringBuffer();
sb.append("RESTAPI设计在细节上有很多自己独特的需要注意的技巧,并且对开发人员在构架设计能力上比传统API有着更高的要求。").append("<br/>")
.append("以下是本项目的API文档");
returnsb.toString();
}
@Bean
publicDocketrestfulApi(){
System.out.println("http://localhost:8080"+pathMapping+"/swagger-ui.html");
returnnewDocket(DocumentationType.SWAGGER_2).groupName("RestfulApi")
//.genericModelSubstitutes(DeferredResult.class)
.genericModelSubstitutes(ResponseEntity.class).useDefaultResponseMessages(true).forCodeGeneration(false)
.pathMapping(pathMapping)//base,最终调用接口后会和paths拼接在一起
.select().paths(doFilteringRules()).build().apiInfo(initApiInfo());
//.select().paths(Predicates.not(PathSelectors.regex("/error.*"))).build().apiInfo(initApiInfo());
}
/**
*设置过滤规则这里的过滤规则支持正则匹配
//若有静态方法在此之前加载就会报集合相关的错误.
*
*@return
*/
privatePredicate<String>doFilteringRules(){
//returnPredicates.not(PathSelectors.regex("/error.*"));
//returnor(regex("/hello.*"),regex("/rest/adxSspFinanceManagement.*"));//success
returnor(regex("/hello.*"),regex("/rest.*"));
}
}
[/code]



run

packagecom.unioncast.db;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importspringfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableSwagger2
publicclassDbRestApiApplication{
//privatestaticfinalLoggerLOG=LogManager.getLogger(DbRestApiApplication.class);
publicstaticvoidmain(String[]args){
SpringApplication.run(DbRestApiApplication.class,args);
}
//@Bean
//publicWebMvcConfigurerAdapteradapter(){
//returnnewWebMvcConfigurerAdapter(){
//@Override
//publicvoidaddInterceptors(InterceptorRegistryregistry){
//super.addInterceptors(registry);
//registry.addInterceptor(newHandlerInterceptor(){
//@Override
//publicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)
//throwsException{
////TODO计划把controller里那些日志转移到这里进行输出
//LOG.info("preHandle");
//returntrue;
//}
//
//@Override
//publicvoidpostHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler,
//ModelAndViewmodelAndView)throwsException{
//LOG.info("postHandle");
//}
//
//@Override
//publicvoidafterCompletion(HttpServletRequestrequest,HttpServletResponseresponse,
//Objecthandler,Exceptionex)throwsException{
//LOG.info("afterCompletion");
//}
//}).addPathPatterns("/**");
//}
//};
//}
}
[/code]



case



packagecom.unioncast.db.api.rest.adx;
importjava.net.URI;
importjava.util.List;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.http.HttpHeaders;
importorg.springframework.http.HttpStatus;
importorg.springframework.http.ResponseEntity;
importorg.springframework.web.bind.annotation.PathVariable;
importorg.springframework.web.bind.annotation.RequestBody;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RequestMethod;
importorg.springframework.web.bind.annotation.ResponseStatus;
importorg.springframework.web.bind.annotation.RestController;
importorg.springframework.web.util.UriComponentsBuilder;
importcom.unioncast.common.adx.model.AdxSspFinanceManagement;
importcom.unioncast.common.page.Pagination;
importcom.unioncast.common.restClient.RestResponse;
importcom.unioncast.db.api.rest.GeneralController;
importcom.unioncast.db.rdbms.core.exception.DaoException;
importcom.unioncast.db.rdbms.core.service.adxDBService.AdxSspFinanceManagementService;
importio.swagger.annotations.Api;
importio.swagger.annotations.ApiImplicitParam;
importio.swagger.annotations.ApiImplicitParams;
importio.swagger.annotations.ApiOperation;
@Api(value="API-AdxSspFinanceManagementController")
@RestController
@RequestMapping("/rest/adxSspFinanceManagement")
publicclassAdxSspFinanceManagementControllerextendsGeneralController{
privatestaticfinalLoggerLOG=LoggerFactory.getLogger(AdxSspFinanceManagementController.class);
@Autowired
privateAdxSspFinanceManagementServiceadxSspFinanceManagementService;
/**
*查找所有
*
*@date2016年10月19日下午1:30:29
*
*@return
*@throwsDaoException
*/
@ApiOperation(value="查找所有",httpMethod="POST",response=RestResponse.class)
@RequestMapping(value="/findAll",method=RequestMethod.POST)
publicRestResponsefindAll()throwsDaoException{
RestResponserestResponse=newRestResponse();
restResponse.setStatus(RestResponse.OK);
AdxSspFinanceManagement[]adxSspFinanceManagements=adxSspFinanceManagementService.findAll();
LOG.info("adxSspFinanceManagements:{}",(Object)adxSspFinanceManagements);
restResponse.setResult(adxSspFinanceManagementService.findAll());
returnrestResponse;
}
/**
*分页条件查找
*
*@date2016年9月29日下午6:59:46
*
*@return
*@throwsDaoException
*/
@ApiOperation(value="分页条件查找",httpMethod="POST",response=RestResponse.class)
@ApiImplicitParams({
@ApiImplicitParam(name="currentPage",required=true,dataType="Integer",paramType="path"),
@ApiImplicitParam(name="pageSize",required=true,dataType="Integer",paramType="path"),
@ApiImplicitParam(name="adxSspFinanceManagement",required=true,dataType="AdxSspFinanceManagement",paramType="body")})
@RequestMapping(value="/page/{currentPage}/{pageSize}",method=RequestMethod.POST)
publicRestResponsepage(@RequestBodyAdxSspFinanceManagementadxSspFinanceManagement,
@PathVariableIntegercurrentPage,@PathVariableIntegerpageSize)throwsDaoException{
LOG.info("adxSspFinanceManagementCondition:{}",adxSspFinanceManagement);
LOG.info("currentPage:{}",currentPage);
LOG.info("pageSize:{}",pageSize);
RestResponserestResponse=newRestResponse();
restResponse.setStatus(RestResponse.OK);
Pagination<AdxSspFinanceManagement>pagination=adxSspFinanceManagementService.page(adxSspFinanceManagement,
currentPage,pageSize);
LOG.info("pagination:{}",pagination);
restResponse.setResult(adxSspFinanceManagementService.page(adxSspFinanceManagement,currentPage,pageSize));
returnrestResponse;
}
/**
*根据id查找
*
*@date2016年9月29日下午7:09:03
*
*@paramid
*@return
*@throwsDaoException
*/
@ApiOperation(value="根据id查找",httpMethod="POST",response=RestResponse.class)
@ApiImplicitParams({@ApiImplicitParam(name="id",required=true,dataType="Integer",paramType="path")})
@RequestMapping(value="/findById/{id}",method=RequestMethod.POST)
publicRestResponsefindById(@PathVariableLongid)throwsDaoException{
LOG.info("id:{}",id);
RestResponserestResponse=newRestResponse();
restResponse.setStatus(RestResponse.OK);
AdxSspFinanceManagementadxSspFinanceManagement=adxSspFinanceManagementService.findById(id);
LOG.info("adxSspFinanceManagement:{}",adxSspFinanceManagement);
restResponse.setResult(adxSspFinanceManagementService.findById(id));
returnrestResponse;
}
/**
*增加
*
*@date2016年10月21日下午5:02:59
*
*@paramadxSspFinanceManagement
*@paramuriComponentsBuilder
*@return
*@throwsDaoException
*/
@ApiOperation(value="增加",httpMethod="POST",response=RestResponse.class)
@ApiImplicitParams({
@ApiImplicitParam(name="adxSspFinanceManagement",required=true,dataType="AdxSspFinanceManagement",paramType="body")})
@RequestMapping(value="/add",method=RequestMethod.POST)
publicResponseEntity<RestResponse>add(@RequestBodyAdxSspFinanceManagementadxSspFinanceManagement,
UriComponentsBuilderuriComponentsBuilder)throwsDaoException{
LOG.info("adxSspFinanceManagement:{}",adxSspFinanceManagement);
RestResponserestResponse=newRestResponse();
restResponse.setStatus(RestResponse.OK);
Longid=adxSspFinanceManagementService.save(adxSspFinanceManagement);
LOG.info("id:{}",id);
restResponse.setResult(id);
HttpHeadershttpHeaders=newHttpHeaders();
URIuri=uriComponentsBuilder.path("/rest/adxSspFinanceManagement/findById/").path(String.valueOf(id)).build()
.toUri();
httpHeaders.setLocation(uri);
returnnewResponseEntity<RestResponse>(restResponse,httpHeaders,HttpStatus.CREATED);
}
/**
*批量增加
*
*@date2016年10月21日下午5:02:47
*
*@paramadxSspFinanceManagements
*@return
*@throwsDaoException
*/
@ApiOperation(value="批量增加",httpMethod="POST",response=RestResponse.class)
@ApiImplicitParams({
@ApiImplicitParam(name="adxSspFinanceManagements",required=true,dataType="List<AdxSspFinanceManagement>",paramType="body")})
@RequestMapping(value="/batchAdd",method=RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
publicRestResponsebatchAdd(@RequestBodyList<AdxSspFinanceManagement>adxSspFinanceManagements)
throwsDaoException{
RestResponserestResponse=newRestResponse();
restResponse.setStatus(RestResponse.OK);
List<Long>ids=adxSspFinanceManagementService.batchAdd(adxSspFinanceManagements);
LOG.info("ids:{}",ids);
restResponse.setResult(ids);
returnrestResponse;
}
/**
*修改
*
*@date2016年10月21日下午5:03:38
*
*@paramadxSspFinanceManagement
*@throwsDaoException
*/
@ApiOperation(value="修改",httpMethod="POST",response=RestResponse.class)
@ApiImplicitParams({
@ApiImplicitParam(name="adxSspFinanceManagement",required=true,dataType="AdxSspFinanceManagement",paramType="body")})
@RequestMapping(value="/update",method=RequestMethod.POST)
publicvoidupdate(@RequestBodyAdxSspFinanceManagementadxSspFinanceManagement)throwsDaoException{
LOG.info("adxSspFinanceManagement:{}",adxSspFinanceManagement);
adxSspFinanceManagementService.updateNotNullField(adxSspFinanceManagement);
}
/**
*删除
*
*@date2016年9月29日下午7:27:57
*
*@paramid
*@return删除了多少条
*@throwsDaoException
*/
@ApiOperation(value="删除",httpMethod="POST",response=RestResponse.class)
@ApiImplicitParams({@ApiImplicitParam(name="id",required=true,dataType="Long",paramType="path")})
@RequestMapping(value="/delete/{id}",method=RequestMethod.POST)
publicRestResponsedelete(@PathVariableLongid)throwsDaoException{
RestResponserestResponse=newRestResponse();
restResponse.setStatus(RestResponse.OK);
inti=adxSspFinanceManagementService.deleteById(id);
LOG.info("thenumberofdelete:{}",i);
restResponse.setResult(i);
returnrestResponse;
}
/**
*批量删除
*
*@date2016年9月29日下午7:29:22
*
*@paramid
*@return删除了多少条
*@throwsDaoException
*/
@ApiOperation(value="删除",httpMethod="POST",response=RestResponse.class)
@ApiImplicitParams({@ApiImplicitParam(name="id",required=true,dataType="Long",paramType="path")})
@RequestMapping(value="/batchDelete",method=RequestMethod.POST)
publicRestResponsebatchDelete(@RequestBodyList<Long>ids)throwsDaoException{
RestResponserestResponse=newRestResponse();
inti=adxSspFinanceManagementService.batchDelete(ids);
restResponse.setStatus(RestResponse.OK);
restResponse.setResult(i);
LOG.info("thenumberofdelete:{}",i);
returnrestResponse;
}
}
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: