频道栏目
首页 > 资讯 > 其他 > 正文

SwaggerUI+SpringBoot自动生成API文档

16-11-03        来源:[db:作者]  
收藏   我要投稿

SwaggerUI+SpringBoot

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>
		<!-- END Swagger -->

properties

server.servlet-path=/v1

Config

package com.unioncast.db.config;
 
import static com.google.common.base.Predicates.or;
import static springfox.documentation.builders.PathSelectors.regex;
 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.ResponseEntity;
 
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
 
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
 
/**
 * SwaggerConfig
 */
@Configuration
public class SwaggerConfig {
 
	@Value("${server.servlet-path}")
	private String pathMapping;
 
	private ApiInfo initApiInfo() {
		ApiInfo apiInfo = new ApiInfo("数据存储项目 Platform API", // 大标题
				initContextInfo(), // 简单的描述
				"1.0.0", // 版本
				"服务条款", "后台开发团队", // 作者
				"The Apache License, Version 2.0", // 链接显示文字
				"http://www.baidu.com"// 网站链接
		);
		return apiInfo;
	}
 
	private String initContextInfo() {
		StringBuffer sb = new StringBuffer();
		sb.append("REST API 设计在细节上有很多自己独特的需要注意的技巧,并且对开发人员在构架设计能力上比传统 API 有着更高的要求。").append("<br/>")
				.append("以下是本项目的API文档");
		return sb.toString();
	}
 
	@Bean
	public Docket restfulApi() {
		System.out.println("http://localhost:8080" + pathMapping + "/swagger-ui.html");
		return new Docket(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
	 */
	private Predicate<String> doFilteringRules() {
//		return Predicates.not(PathSelectors.regex("/error.*"));
//		return or(regex("/hello.*"), regex("/rest/adxSspFinanceManagement.*"));//success
		return or(regex("/hello.*"), regex("/rest.*"));
	}
}

run

package com.unioncast.db;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
@SpringBootApplication
@EnableSwagger2
public class DbRestApiApplication {
 
//	private static final Logger LOG = LogManager.getLogger(DbRestApiApplication.class);
 
	public static void main(String[] args) {
		SpringApplication.run(DbRestApiApplication.class, args);
	}
 
//	@Bean
//	public WebMvcConfigurerAdapter adapter() {
//		return new WebMvcConfigurerAdapter() {
//			@Override
//			public void addInterceptors(InterceptorRegistry registry) {
//				super.addInterceptors(registry);
//				registry.addInterceptor(new HandlerInterceptor() {
//					@Override
//					public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
//							throws Exception {
//						// TODO 计划把controller里那些日志转移到这里进行输出
//						LOG.info("preHandle");
//						return true;
//					}
//
//					@Override
//					public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
//							ModelAndView modelAndView) throws Exception {
//						LOG.info("postHandle");
//					}
//
//					@Override
//					public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
//							Object handler, Exception ex) throws Exception {
//						LOG.info("afterCompletion");
//					}
//				}).addPathPatterns("/**");
//			}
//		};
//	}
	
	
}

case

package com.unioncast.db.api.rest.adx;
 
import java.net.URI;
import java.util.List;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.util.UriComponentsBuilder;
 
import com.unioncast.common.adx.model.AdxSspFinanceManagement;
import com.unioncast.common.page.Pagination;
import com.unioncast.common.restClient.RestResponse;
import com.unioncast.db.api.rest.GeneralController;
import com.unioncast.db.rdbms.core.exception.DaoException;
import com.unioncast.db.rdbms.core.service.adxDBService.AdxSspFinanceManagementService;
 
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
 
@Api(value = "API - AdxSspFinanceManagementController")
@RestController
@RequestMapping("/rest/adxSspFinanceManagement")
public class AdxSspFinanceManagementController extends GeneralController {
 
	private static final Logger LOG = LoggerFactory.getLogger(AdxSspFinanceManagementController.class);
 
	@Autowired
	private AdxSspFinanceManagementService adxSspFinanceManagementService;
 
	/**
	 * 查找所有
	 * 
	 * @date 2016年10月19日 下午1:30:29
	 *
	 * @return
	 * @throws DaoException
	 */
	@ApiOperation(value = "查找所有", httpMethod = "POST", response = RestResponse.class)
	@RequestMapping(value = "/findAll", method = RequestMethod.POST)
	public RestResponse findAll() throws DaoException {
		RestResponse restResponse = new RestResponse();
		restResponse.setStatus(RestResponse.OK);
		AdxSspFinanceManagement[] adxSspFinanceManagements = adxSspFinanceManagementService.findAll();
		LOG.info("adxSspFinanceManagements:{}", (Object) adxSspFinanceManagements);
		restResponse.setResult(adxSspFinanceManagementService.findAll());
		return restResponse;
	}
 
	/**
	 * 分页条件查找
	 *
	 * @date 2016年9月29日 下午6:59:46
	 *
	 * @return
	 * @throws DaoException
	 */
	@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)
	public RestResponse page(@RequestBody AdxSspFinanceManagement adxSspFinanceManagement,
			@PathVariable Integer currentPage, @PathVariable Integer pageSize) throws DaoException {
		LOG.info("adxSspFinanceManagementCondition:{}", adxSspFinanceManagement);
		LOG.info("currentPage:{}", currentPage);
		LOG.info("pageSize:{}", pageSize);
		RestResponse restResponse = new RestResponse();
		restResponse.setStatus(RestResponse.OK);
		Pagination<AdxSspFinanceManagement> pagination = adxSspFinanceManagementService.page(adxSspFinanceManagement,
				currentPage, pageSize);
		LOG.info("pagination:{}", pagination);
		restResponse.setResult(adxSspFinanceManagementService.page(adxSspFinanceManagement, currentPage, pageSize));
		return restResponse;
	}
 
	/**
	 * 根据id查找
	 *
	 * @date 2016年9月29日 下午7:09:03
	 *
	 * @param id
	 * @return
	 * @throws DaoException
	 */
	@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)
	public RestResponse findById(@PathVariable Long id) throws DaoException {
		LOG.info("id:{}", id);
		RestResponse restResponse = new RestResponse();
		restResponse.setStatus(RestResponse.OK);
		AdxSspFinanceManagement adxSspFinanceManagement = adxSspFinanceManagementService.findById(id);
		LOG.info("adxSspFinanceManagement:{}", adxSspFinanceManagement);
		restResponse.setResult(adxSspFinanceManagementService.findById(id));
		return restResponse;
	}
 
	/**
	 * 增加
	 * 
	 * @date 2016年10月21日 下午5:02:59
	 *
	 * @param adxSspFinanceManagement
	 * @param uriComponentsBuilder
	 * @return
	 * @throws DaoException
	 */
	@ApiOperation(value = "增加", httpMethod = "POST", response = RestResponse.class)
	@ApiImplicitParams({
			@ApiImplicitParam(name = "adxSspFinanceManagement", required = true, dataType = "AdxSspFinanceManagement", paramType = "body") })
	@RequestMapping(value = "/add", method = RequestMethod.POST)
	public ResponseEntity<RestResponse> add(@RequestBody AdxSspFinanceManagement adxSspFinanceManagement,
			UriComponentsBuilder uriComponentsBuilder) throws DaoException {
		LOG.info("adxSspFinanceManagement:{}", adxSspFinanceManagement);
		RestResponse restResponse = new RestResponse();
		restResponse.setStatus(RestResponse.OK);
		Long id = adxSspFinanceManagementService.save(adxSspFinanceManagement);
		LOG.info("id:{}", id);
		restResponse.setResult(id);
		HttpHeaders httpHeaders = new HttpHeaders();
		URI uri = uriComponentsBuilder.path("/rest/adxSspFinanceManagement/findById/").path(String.valueOf(id)).build()
				.toUri();
		httpHeaders.setLocation(uri);
		return new ResponseEntity<RestResponse>(restResponse, httpHeaders, HttpStatus.CREATED);
	}
 
	/**
	 * 批量增加
	 * 
	 * @date 2016年10月21日 下午5:02:47
	 *
	 * @param adxSspFinanceManagements
	 * @return
	 * @throws DaoException
	 */
	@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)
	public RestResponse batchAdd(@RequestBody List<AdxSspFinanceManagement> adxSspFinanceManagements)
			throws DaoException {
		RestResponse restResponse = new RestResponse();
		restResponse.setStatus(RestResponse.OK);
		List<Long> ids = adxSspFinanceManagementService.batchAdd(adxSspFinanceManagements);
		LOG.info("ids:{}", ids);
		restResponse.setResult(ids);
		return restResponse;
	}
 
	/**
	 * 修改
	 * 
	 * @date 2016年10月21日 下午5:03:38
	 *
	 * @param adxSspFinanceManagement
	 * @throws DaoException
	 */
	@ApiOperation(value = "修改", httpMethod = "POST", response = RestResponse.class)
	@ApiImplicitParams({
			@ApiImplicitParam(name = "adxSspFinanceManagement", required = true, dataType = "AdxSspFinanceManagement", paramType = "body") })
	@RequestMapping(value = "/update", method = RequestMethod.POST)
	public void update(@RequestBody AdxSspFinanceManagement adxSspFinanceManagement) throws DaoException {
		LOG.info("adxSspFinanceManagement:{}", adxSspFinanceManagement);
		adxSspFinanceManagementService.updateNotNullField(adxSspFinanceManagement);
	}
 
	/**
	 * 删除
	 *
	 * @date 2016年9月29日 下午7:27:57
	 *
	 * @param id
	 * @return 删除了多少条
	 * @throws DaoException
	 */
	@ApiOperation(value = "删除", httpMethod = "POST", response = RestResponse.class)
	@ApiImplicitParams({ @ApiImplicitParam(name = "id", required = true, dataType = "Long", paramType = "path") })
	@RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
	public RestResponse delete(@PathVariable Long id) throws DaoException {
		RestResponse restResponse = new RestResponse();
		restResponse.setStatus(RestResponse.OK);
		int i = adxSspFinanceManagementService.deleteById(id);
		LOG.info("the number of delete:{}", i);
		restResponse.setResult(i);
		return restResponse;
	}
 
	/**
	 * 批量删除
	 *
	 * @date 2016年9月29日 下午7:29:22
	 *
	 * @param id
	 * @return 删除了多少条
	 * @throws DaoException
	 */
	@ApiOperation(value = "删除", httpMethod = "POST", response = RestResponse.class)
	@ApiImplicitParams({ @ApiImplicitParam(name = "id", required = true, dataType = "Long", paramType = "path") })
	@RequestMapping(value = "/batchDelete", method = RequestMethod.POST)
	public RestResponse batchDelete(@RequestBody List<Long> ids) throws DaoException {
		RestResponse restResponse = new RestResponse();
		int i = adxSspFinanceManagementService.batchDelete(ids);
		restResponse.setStatus(RestResponse.OK);
		restResponse.setResult(i);
		LOG.info("the number of delete:{}", i);
		return restResponse;
	}
}
相关TAG标签
上一篇:jxl,java操作Excel的运用:小型的课时统计系统
下一篇:PHP设计模式之观察者模式(Observer)详细介绍和代码实例
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站