一:引入配置类
<!--swagger-->
<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>
二:配置
package com.zskj.smart_wok.config;
import com.zskj.smart_wok.service.bean.ApiResult;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RequestMethod;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.ResponseMessageBuilder;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.ResponseMessage;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author Administrator
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket newsApi() {
List<ResponseMessage> responseMessages = responseMessageList();
return new Docket(DocumentationType.SWAGGER_2)
.groupName("smart_wok")
.apiInfo(apiInfo())
.useDefaultResponseMessages(false)
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.build()
.globalResponseMessage(RequestMethod.GET, responseMessages)
.globalResponseMessage(RequestMethod.POST, responseMessages)
.globalResponseMessage(RequestMethod.PUT, responseMessages)
.globalResponseMessage(RequestMethod.DELETE, responseMessages)
.globalOperationParameters(Arrays.asList(
new ParameterBuilder()
.name("access-token")
.description("访问令牌")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(false)
.build(),
new ParameterBuilder()
.name("LOCALE-LANGUAGE")
.description("语言包")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(false)
.build()));
}
private ApiInfo apiInfo() {
StringBuilder sb = new StringBuilder();
sb.append("1.所有url以sw开头的接口(不包含/sw/auth/**的接口),调用时必须在header中带上token值。token属性名为'access-token'<br/><br/>");
return new ApiInfoBuilder()
.title("智能炒锅App端接口")
.description(sb.toString())
.termsOfServiceUrl("www.appof.cn")
.contact(new Contact("智能炒锅", "", "liuben@mobi-app.cn"))
.version("1.0")
.build();
}
private List<ResponseMessage> responseMessageList() {
List<ResponseMessage> responseMessageList = new ArrayList<>();
responseMessageList.add(new ResponseMessageBuilder().code(ApiResult.TO_LOGIN.getCode()).message(ApiResult.TO_LOGIN.getMsg() + "(除授权及公共接口外返回)").responseModel(new ModelRef("ApiError")).build());
responseMessageList.add(new ResponseMessageBuilder().code(ApiResult.PARAM_IS_ILLEGAL.getCode()).message(ApiResult.PARAM_IS_ILLEGAL.getMsg()).responseModel(new ModelRef("ApiError")).build());
responseMessageList.add(new ResponseMessageBuilder().code(ApiResult.SUCCESS.getCode()).message(ApiResult.SUCCESS.getMsg()).responseModel(new ModelRef("ApiError")).build());
return responseMessageList;
}
}
相关类:
package com.zskj.smart_wok.service.bean; /** * User: luc * Date: 2016/11/30 11:32 * Desc: this is simple description about this class */ public enum ApiResult { FAILED_TO_SEND_MAIL(1024, "邮件发送失败"), SUCCESS(20000, "响应成功"), INVALID_AUTH(20006, "权限不足"), TO_LOGIN(40001, "请登录"), USERNAME_IS_NOT_EXIST(40002, "该账号不存在"), BE_LOCKED(40003, "该账户被禁用"), THE_CODE_IS_ERROR(40004, "验证码错误"), BUSINESS_FAIL(40005, "业务处理失败"), DATA_NOT_FOUND(40004, "数据不存在"), AREA_IS_EXISTED(40007, "该区域已存在,请勿重复添加"), THR_GOODS_SN_IS_EXIST(40007, "该商品货号已存在"), ONLY_CLOSE_UN_PAY_ORDER(40008, "只能关闭待付款的订单"), CATEGORY_BE_RELATED(40009, "该分类已有商品,无法删除"), PASSWORD_ERROR(40010, "密码错误"), USERNAME_IS_REGISTERED(40011, "该账号已注册"), UN_CORRECT_VERIFY_CODE(40012, "验证码不正确"), THE_STATIC_URL_IS_EXIST(40013, "该静态内容已存在"), ONLY_CANCEL_UN_PAY_ORDER(40014, "只能取消待付款的订单"), MUST_CHOOSE_THE_CANCELED_ORDER(40015, "请选择被取消的订单"), MUST_CHOOSE_TO_AUDIT_ORDER(40017, "请选择待审核的订单"), PAY_ERROR(40018, "支付异常"), GOODS_NOT_FOUND(40019, "该商品不存在"), PARAM_IS_ILLEGAL(40023, "参数不合法"), SAME_ROLE(40032, "已有该角色"), RESERVED_ROLE_CANT_OPERATE(40033, "系统预留角色,无法操作!"), NOT_ORDER(40034, "没有找到这个订单"), SEND_SMS_FREQUENTLY(40035, "发送验证码频繁"), ROLE_CANT_DELETE(40033, "该角色下已有管理员!"), NORMAL_ADMIN_CANT_LOCKED(40039, "最高账户禁止锁定!"), THE_NAME_BRAND_IS_EXISTED(40042, "该名称品牌已存在"), EXCEL_DATA_INCOMPLETE(40057, "excel表中的订单数据不完整"), TERMINAL_KEY(40058, "无法匹配,商户密匙已被更新"), ORDER_COULD_NOT_BE_DELETE_BY_USER(40059, "取消或完成的订单可删除"), ORDER_COULD_NOT_BE_RECEIPTED(40060, "该订单无法收货"), ORDER_COULD_NOT_BE_REMIND_SHIP(40061, "该订单已提醒发货"), ORDER_REMIND_MAX(40062, "订单提醒发货次数上限"), WX_CODE_TO_USER_FAIL(40063, "微信授权失败"), USER_AUTH_NOT_EXIST(40064, "授权用户不存在"), USER_AUTH_BIND(40065, "授权用户已被绑定"), UPDATE_PAYMENT_FAIL(40066, "支付回调:更新收款单失败"), UPDATE_ORDER_FAIL(40067, "支付回调:更新订单失败"), RECEIPT_ADDRESS_OVER_MAX(40068, "收货地址新增超出最大限制"), BRAND_BE_RELATED(40069, "该品牌已有商品,无法删除"), RECEIPT_ADDRESS_DEF_MAX(40070, "默认收货地址超出最大限制"), RECEIPT_ADDRESS_NOT_EXIST(40071, "收货地址不存在"), INVOICE_TAX_NO_EMPTY(40072,"企业发票税号不存在"), USER_ACCOUT_CHECK(40073,"账号审核中"), USER_ACCOUT_FAIL(40074,"账号审核失败"), SHARE_COOKBOOK_CODE_FAIL(40075,"获取菜谱分享码失败"), RECEIPT_ADDRESS_NOT_DEF_EXIST(40076, "默认收货地址不存在"), INVOICE_TYPE_NO_EMPTY(40077,"发票类型不不能为空"), INVOICE_NO_REPEAT(40078,"不能重复申请发票"), GOODS_NOT_MARKETABLE(40079,"该商品已下架"), LACK_OF_STOCK(40080, "库存不足"), SEND_MAX_SMS(40081, "发送验证码上限"), SYSTEM_EXCEPTION(50000, "系统异常"); private final int code; private final String msg; ApiResult(int code, String msg) { this.code = code; this.msg = msg; } public int getCode() { return code; } public String getMsg() { return msg; } public ApiResultMap<String, Object> getMap() { return ThreadLocalMap.get().add(ThreadLocalMap.CODE, this.getCode()).add(ThreadLocalMap.MSG, this.getMsg()); } public ApiResultMap<String, Object> getMap(String errmsg) { return ThreadLocalMap.get().add(ThreadLocalMap.CODE, this.getCode()).add(ThreadLocalMap.MSG, this.getMsg()) .add(ThreadLocalMap.ERRMSG, errmsg); } }