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


猜你喜欢

转载自blog.csdn.net/u012220365/article/details/80569813