Spring mvc Swagger2 API 集成记录

1、swargger 简介

Swagger™的目标是为REST APIs 定义一个标准的,与语言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下能发现和理解各种服务的功能。当服务通过Swagger定义,消费者就能与远程的服务互动通过少量的实现逻辑。类似于低级编程接口,Swagger去掉了调用服务时的很多猜测。
现记录一下swargger 与spring mvc集成配置过程,以备忘。

2、jar包依赖

<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger2</artifactId>
	<version>2.6.1</version>
</dependency>
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger-ui</artifactId>
	<version>2.6.1</version>
</dependency>

3、swagger配置文件

@Configuration
@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig {
	@Bean
	public Docket createRestApi() {
		return new Docket(DocumentationType.SWAGGER_2).enable(WebConfig.isEnableSwagger()).apiInfo(apiInfo()).select()
				.apis(RequestHandlerSelectors.basePackage("com.boco")).paths(PathSelectors.any()).build();
	}

	private ApiInfo apiInfo() {
		return new ApiInfoBuilder().title("系统APIs").description("").termsOfServiceUrl("http://www.boco.com/")
				.version("1.0").build();
	}
}
其中 eable(boolean) 可以控制开启或关闭接口文档功能,在生产环境可将其关闭

4、Spring mvc中配置

在自动扫描目录中加入 springfox,
<context:component-scan
		base-package="springfox,......" />

静态资源列表中加入
<mvc:resources mapping="swagger-ui.html" location="classpath*:/META-INF/resources" />
<mvc:resources mapping="/webjars/**"
		location="classpath*:/META-INF/resources/webjars" />

5、Controller 方法中加入swargger注解

@RestController
@RequestMapping("/equipment")
public class EquipController extends BaseController {

	@Autowired
	private EquipmentService equipmentService;

	/**
	 * 获取设备类型列表及关联信息
	 */
	@ApiOperation("获取设备类型列表")
	@RequestMapping(value = "/getEquipTypes", method = RequestMethod.GET)
	public OutResult<List<EquipType>> getEquipTypeInfo(HttpServletRequest request, HttpServletResponse response) {
		OutResult<List<EquipType>> result = new OutResult<>();
		try {
			List<EquipType> equipTypes = equipmentService.getEquipTypes();
			returnSuccessInfo(result);
			result.setResult(equipTypes);
		} catch (Exception e) {
			log.error("获取设备类型列表异常", e);
			returnFailInfo(result);
		}

		return result;
	}

	/**
	 * 获取设备类型列表及关联信息
	 */
	@SuppressWarnings("unchecked")
	@ApiOperation("分页获取设备列表")
	@RequestMapping(value = "/getEquipments", method = RequestMethod.GET)
	public OutResult<PageBean<Equipment>> getEquipments(HttpServletRequest request,
			@ModelAttribute EquipmentQueryBo equipmentQueryBo) {
		OutResult<PageBean<Equipment>> result = new OutResult<>();
		try {
			Page<Equipment> equipments = equipmentService.selectByPage(equipmentQueryBo);
			returnSuccessInfo(result);
			result.setResult((PageBean<Equipment>) parsePageBean(equipments));
		} catch (Exception e) {
			log.error("获取设备列表异常", e);
			returnFailInfo(result);
		}

		return result;
	}

	/**
	 * 获取设备类型列表及关联信息
	 */
	@ApiOperation("保存设备")
	@RequestMapping(value = "/saveEquipment", method = RequestMethod.POST)
	public OutResult<?> saveEquipment(HttpServletRequest request, HttpServletResponse response,
			@ModelAttribute Equipment equipment) {
		OutResult<?> result = new OutResult<>();
		try {
			equipmentService.saveEquipment(equipment);
			returnSuccessInfo(result);
		} catch (ErrorInfoExeception e) {
			returnFailInfo(result);
			result.setMessage(e.getMessage());
		} catch (Exception e) {
			log.error("获取设备列表异常", e);
			returnFailInfo(result);
		}

		return result;
	}

	/**
	 * 删除设备
	 */
	@ApiOperation("删除设备")
	@RequestMapping(value = "/deleteByIds", method = RequestMethod.POST)
	public OutResult<?> deleteByIds(HttpServletRequest request, HttpServletResponse response,
			@ApiParam(value = "设备id字符串以逗号间隔", example = "1,2") @RequestParam String ids) {
		OutResult<?> result = new OutResult<>();
		try {
			equipmentService.deleteEquipmets(ids);
			returnSuccessInfo(result);
		} catch (ErrorInfoExeception e) {
			returnFailInfo(result);
			result.setMessage(e.getMessage());
		} catch (Exception e) {
			log.error("删除设备异常", e);
			returnFailInfo(result);
		}

		return result;
	}

}


对象中添加swargger注解
@ApiModel
public class Equipment {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@ApiParam("设备id")
	private Long id;

	@ApiParam("设备类型")
	private String type;

	@ApiParam(hidden = true)
	@Transient
	private String typeName;

	@ApiParam("设备编号")
	private String code;

	@ApiParam("设备名称")
	private String name;

	@ApiParam("ip")
	private String ip;

	@ApiParam("端口")
	private Integer port;

	@ApiParam(hidden = true)
	private Float longitude;

	@ApiParam(hidden = true)
	private Float latitude;

	@ApiParam("安装位置")
	private String address;

	// 省略getters setters

}


6、启动项目

通过连接访问api文档http://ip:port/{context path}/swagger-ui.html如下图所示



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值