Swagger的个性化定制

Swagger默认是使用springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl来将Document转换成Swagger。可以自己写个类继承该类并根据自己的需要重写Swagger mapDocumentation(Documentation from)

@Primary
@Component("ServiceModelToSwagger2Mapper")
public class ServiceModelToSwagger2Mapper extends springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl {

    @Override
    public Swagger mapDocumentation(Documentation from) {
        Swagger swagger=super.mapDocumentation(from);
        swagger.getPaths().entrySet().stream().filter(entry->BossConstant.isSelector(entry.getKey()))
                .map(entry->entry.getValue().getGet()).filter(Predicates.notNull())
                .map(get->get.getTags()).filter(tags->!tags.contains(BossConstant.TAG_SELECTOR))
                .forEach(tags->tags.add(BossConstant.TAG_SELECTOR));
        Set<String> microServices= Sets.newTreeSet(ComparatorUtils.NATURAL_COMPARATOR);
        swagger.getPaths().entrySet().removeIf(entry-> entry.getKey().startsWith(BossConstant.SERVICE_URL)||entry.getKey().startsWith(BossConstant.LISTENER_URL));
        swagger.getPaths().entrySet().stream().forEach(entry->{
            String url=entry.getKey();
            if(!url.startsWith(BossConstant.BASE_URL)){
                return;
            }
            String microService=Splitter.on('/').splitToList(entry.getKey()).get(2);
            microServices.add(microService);
            Stream.of(entry.getValue().getDelete(),entry.getValue().getGet(),entry.getValue().getPatch(),entry.getValue().getPost(),entry.getValue().getPut())
                    .filter(Predicates.notNull()).map(method->method.getTags()).forEach(list->list.add(microService));
        });
        Tag tag=swagger.getTags().stream().filter(t->TAG_SELECTOR.equals(t.getName())).findAny().orElse(null);
        if(null==tag){
            tag=new Tag();
            tag.setName(TAG_SELECTOR);
            swagger.getTags().add(tag);
        }
        tag.setDescription("下拉框/级联下拉框/树");
        List<Tag> tags=Lists.newArrayList(tag);
        for(String s:microServices){
            Tag t=new Tag();
            t.setName(s);
            tags.add(t);
        }
        tags.addAll(Developer.tags());
        tags.addAll(swagger.getTags());
        swagger.setTags(tags);
        return swagger;
    }
}


Swagger UI是一款RESTFUL接口的文档在线自动生成 功能测试功能软件。       现在多数的项目开发中,网站和移动端都需要进行数据交互和对接,这少不了使用REST编写API接口这种场景。例如有些团队,移动端交由了另一团队开发,不同开发小组之间就需要以规范和文档作为标准和协作基础。良好的文档可以让开发事半功倍,而作为又懒又要效率又能交代的码农,当然最希望一 切自动化,或用小聪明来找到最适合的工具。       Swagger-UI简单而一目了然。它能够纯碎的基于html javascript实现,只要稍微整合一下便能成为方便的API在线测试工具。       项目的设计架构中一直提倡使用TDD(测试驱动)原则来开发,swagger-ui在这方面更是能提供很大帮助。 Swagger-UI更倾向于在线测试接口和数据,但其核心是一个javascript插件,只要稍作修改,便能按需求定制出不同格式的说明文档,在github上更是基于它集成到各种语言环境,分支众多。        其官方提供了一个离线版本,它的使用方法十分简单:直接在js格式的资源文件中录入REST API的json信息,便能容易地生成不同模块下的API列表,每个API接口描述和参数、请求方法都能在每个json数组中定制。下面是目前项目中使用到的部分预览图:  Swagger-UI 的官方地址: http://swagger.wordnik.com Github上的项目地址: https://github.com/wordnik/swagger-ui 官方提供的demo地址 http://petstore.swagger.wordnik.com/ 标签:api
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值