网站建设资讯

NEWS

网站建设资讯

如何实现knife4j导出离线接口文档

本篇内容主要讲解“如何实现knife4j导出离线接口文档”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现knife4j导出离线接口文档”吧!

为锡林郭勒盟等地区用户提供了全套网页设计制作服务,及锡林郭勒盟网站建设行业解决方案。主营业务为成都网站设计、做网站、锡林郭勒盟网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

** 导出离线接口文档,妈妈再也不用让我手动写接口文档了 **

  1. 1 引入依赖

  
io.springfox 
springfox-boot-starter 
3.0.0 
    
    
        com.github.xiaoymin
        knife4j-spring-boot-starter
        3.0.2
    `
  1. 2 增加swagger配置类

package com.example.demo.conf;


import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import io.swagger.annotations.Api;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.builders.*;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * swagger 配置
 *
 * @author xmtx
 */
@Configuration
@EnableOpenApi
@EnableKnife4j
public class Swagger3Config {

    @Bean
    public Docket systemApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("小明童鞋demo")
                .genericModelSubstitutes(DeferredResult.class).useDefaultResponseMessages(false).forCodeGeneration(true)
                .select()
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                // 这里写controller 所在的路径
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                .paths(PathSelectors.any()).build()
                .pathMapping("/")
                // 暂时不加权限认证
//                .securitySchemes(Collections.singletonList(securitySchema()))
//                .securityContexts(Collections.singletonList(securityContext()))
                .apiInfo(systemApiInfo());
    }

    private ApiInfo systemApiInfo() {
        return new ApiInfoBuilder()
                .title("小明童鞋demo")
                .description("测试swagger整合knife4j生成离线接口文档")
                .termsOfServiceUrl("https://my.oschina.net/xiaomingnevermind")
                .contact(new Contact("xmtx", "", "xmtx.2015@gmail.com"))
                .version("1.0")
                .build();
    }

    /**
     * 生成全局通用参数
     *
     * @return
     */

    private List getGlobalRequestParameters() {
        List parameters = new ArrayList<>();
        parameters.add(new RequestParameterBuilder()
                .name("x-access-token")
                .description("令牌")
                .required(false)
                .in(ParameterType.HEADER)
                .build());
        parameters.add(new RequestParameterBuilder()
                .name("Equipment-Type")
                .description("产品类型")
                .required(false)
                .in(ParameterType.HEADER)
                .build());
        return parameters;
    }

    /**
     * 生成通用响应信息
     *
     * @return
     */
    private List getGlobalResponseMessage() {
        List responseList = new ArrayList<>();
        responseList.add(new ResponseBuilder().code("404").description("找不到资源").build());
        return responseList;
    }

//
//    private OAuth securitySchema() {
//
//        List authorizationScopeList = new ArrayList();
//        List grantTypes = new ArrayList();
//        GrantType creGrant = new ResourceOwnerPasswordCredentialsGrant("/oauth/token");
//
//        grantTypes.add(creGrant);
//
//        return new OAuth("oauth3schema", authorizationScopeList, grantTypes);
//
//    }

//
//    private SecurityContext securityContext() {
//        return SecurityContext.builder()
//                .securityReferences(defaultAuth())
//                .forPaths(PathSelectors.ant("/v1/api/**"))
//                .build();
//    }

    private List defaultAuth() {

        final AuthorizationScope[] authorizationScopes = new AuthorizationScope[0];
        return Collections.singletonList(new SecurityReference("oauth3schema", authorizationScopes));
    }
}

1. 3. 编写一个controller进行测试

private static final Logger log = LoggerFactory.getLogger(AspectController.class);

@Autowired
private AspectService aspectService;

@ApiOperation(value = "测试getaspect")
@GetMapping(value = "/getaspect")
public String getAspect(@ApiParam("名称") String name,
                        @ApiParam Integer age) throws InterruptedException {
    AspectBean aspectBean = new AspectBean();
    aspectBean.setAge(age);
    aspectBean.setBirthday(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date().getTime()));
    aspectBean.setSex(1);
    aspectBean.setName(name);
    return JSON.toJSONString(aspectService.testAspect(aspectBean));
}

@PostMapping(value = "/postaspect")
public String postAspect(@RequestBody AspectBean aspectBean) throws InterruptedException {
    return JSON.toJSONString(aspectService.testAspect(aspectBean));
}

@GetMapping(value = "/init")
public boolean init() {
    return aspectService.init();
}

1. 4. 查看效果图

如何实现knife4j导出离线接口文档

如何实现knife4j导出离线接口文档

如何实现knife4j导出离线接口文档

如何实现knife4j导出离线接口文档

到此,相信大家对“如何实现knife4j导出离线接口文档”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享标题:如何实现knife4j导出离线接口文档
标题URL:http://cdweb.net/article/ggessc.html