Swagger的使用

一:引入配置类

<!--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);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值