xiaoymin / blog-comments

blog-comments
0 stars 0 forks source link

快速开始 | swagger-bootstrap-ui #74

Open xiaoymin opened 5 years ago

xiaoymin commented 5 years ago

http://doc.xiaominfo.com/guide/useful.html

Vue 驱动的静态网站生成器

daidai2580 commented 4 years ago

你好 为什么我调试里没有发送按钮啊? 都发送不了请求

xiaoymin commented 4 years ago

你好 为什么我调试里没有发送按钮啊? 都发送不了请求

你后端配置了UiConfiguration,设置了SupportSubmitMethod选项,如果为空的话是不能发送的

daidai2580 commented 4 years ago

@Configuration @EnableSwagger2 @ComponentScan(basePackages = {"cn.useragent.controller"}) @EnableSwaggerBootstrapUI public class Swagger2Config {

// 定义分隔符
private static final String splitor = ";";

/**
 * 创建API应用 api() 增加API相关信息
 * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
 * 本例采用指定扫描的包路径来定义指定要建立API的目录。
 *
 * @return
 */
@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
            .apis(RequestHandlerSelectors.basePackage("cnuseragent.controller")).paths(PathSelectors.any()).build()
            .pathMapping("/").globalOperationParameters(setHeaderToken());
}

/**
 * 构建 api文档的详细信息函数
 *
 * @return
 */
private ApiInfo apiInfo() {

    return new ApiInfoBuilder().title("后台管理 api").description("daidai").version("1.0").build();
}

public static Predicate<RequestHandler> basePackage(final String basePackage) {
    return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
}

private static Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
    return input -> {
        // 循环判断匹配
        for (String strPackage : basePackage.split(splitor)) {
            boolean isMatch = input.getPackage().getName().startsWith(strPackage);
            if (isMatch) {
                return true;
            }
        }
        return false;
    };
}

@SuppressWarnings("deprecation")
private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
    return Optional.fromNullable(input.declaringClass());
}

/**
 * 添加token认证
 *
 * @return
 */
private List<Parameter> setHeaderToken() {
    List<Parameter> pars = new ArrayList<>();
    ParameterBuilder tokenPar = new ParameterBuilder();
    tokenPar.name("token").defaultValue("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsInRpbWVzdGFtcCI6MTU2Njc4ODAxMjI5NH0.eyJhZG1pbklkIjoxfQ.LSITSDaez1Bb1o3tpA6xm-QQuQlmfHpEdUhMj1OEQJY")
            .description("请求路径包含 auth 的必传token")
            .modelRef(new ModelRef("string"))
            .parameterType("header").required(false).build();
    pars.add(tokenPar.build());
    return pars;
}

} 大佬这我的配置 没发现这个啊

932074842 commented 4 years ago

我发现 swagger-bootstrap-ui 这个包引与不引效果一样的呢?

kevin01222 commented 4 years ago

能和swagger-ui一起用么?

CoolMoonGG commented 4 years ago

控制器接口太多的时候加载很慢,比swagger-ui 慢很多,直接导致菜单出不来,无法用。希望尽快出新版本,对性能进行优化

nixiauhs commented 4 years ago

knife4j相对于swagger更亲近。就是感觉菜单栏一个请求不同的请求方式get、post..全都放到菜单栏不太好 1.占用资源,几百上千个很难维护。2.一个请求一般测试都是固定一个请求方式测试业务,不同方式请求的测试几率低,可以放到一个页面,下拉列表不同请求方式。谢谢

xiaoymin commented 4 years ago

knife4j相对于swagger更亲近。就是感觉菜单栏一个请求不同的请求方式get、post..全都放到菜单栏不太好 1.占用资源,几百上千个很难维护。2.一个请求一般测试都是固定一个请求方式测试业务,不同方式请求的测试几率低,可以放到一个页面,下拉列表不同请求方式。谢谢

这个是你们代码的问题,使用@RequestMapping注解,却没有指定该方法的类型,导致会生成多个不同类型但是是同一个接口的菜单,如果单指定@GetMapping@PutMapping就无此问题

Knife4j的个性化设置里面也提供了过滤@RequestMapping注解的功能

CandyKIng1991 commented 4 years ago

最简单示例https://www.cnblogs.com/liuyangfirst/p/12900597.html

CandyKIng1991 commented 4 years ago

knife4j注解讲解https://www.cnblogs.com/liuyangfirst/p/13195122.html

CandyKIng1991 commented 4 years ago

knife4j添加lombockhttps://www.cnblogs.com/liuyangfirst/p/13127482.html

lzh5435 commented 4 years ago

非必传参数 没写任何东西 传来个"null"的字符串

xiaoymin commented 4 years ago

非必传参数 没写任何东西 传来个"null"的字符串

升级到2.0.4

CandyKIng1991 commented 4 years ago

knife4j+clickhouse+springboot+mybatis实战项目 https://www.cnblogs.com/liuyangfirst/p/13404473.html

liurong811 commented 4 years ago

您好,请问在ui界面没显示全局参数菜单,只显示了主页和接口栏,是什么问题

azydbly commented 4 years ago

我的jar为什么下载不下来