swagger隐藏实体类字段_swagger2自定义隐藏实体类属性,swagger2版本2.8.0

本文介绍如何在不修改源码的情况下,通过创建自定义组件`CustomizeModelAttributeParameterExpander`来隐藏Swagger2文档中不需要显示的实体类字段。通过添加`@IgnoreSwaggerParameter`注解,可以避免字段在Swagger页面中展示,简化前端开发人员的使用。
摘要由CSDN通过智能技术生成

博主将这个功能做了个组件,不想在项目中修改源码的请移步另一篇博客

假如接收参数的实体类中关联了其他对象,那么swagger2的页面中参数应该会多出来这些,dept.id,dept.deptName,或者集合属性,roles[0].id,roles[0].roleName等等。

​​​这些属性有可能是不需要用来接收参数的,出现在文档中会给前端开发人员带来困惑

笔者在swagger2提供的配置中没有找到隐藏此类参数的设置

但是通过阅读源码找到了展开参数的类springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander,笔者通过继承这个类,并添加@Primary注解覆盖了源码中的逻辑,修改了getBeanPropertyNames方法,其他不变

package com.example.swagger;

import com.example.annotation.IgnoreSwaggerParameter;

import com.example.util.FieldUtil;

import com.fasterxml.classmate.ResolvedType;

import com.fasterxml.classmate.members.ResolvedField;

import com.google.common.annotations.VisibleForTesting;

import com.google.common.base.Function;

import com.google.common.base.Optional;

import com.google.common.base.Predicate;

import com.google.common.collect.FluentIterable;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Primary;

import org.springframework.stereotype.Component;

import org.springframework.util.ClassUtils;

import springfox.documentation.builders.ParameterBuilder;

import springfox.documentation.schema.Maps;

import springfox.documentation.schema.Types;

import springfox.documentation.schema.property.field.FieldProvider;

import springfox.documentation.service.Parameter;

import springfox.documentation.spi.schema.AlternateTypeProvider;

import springfox.documentation.spi.schema.EnumTypeDeterminer;

import springfox.documentation.spi.service.contexts.DocumentationContext;

import springfox.documentation.spi.service.contexts.ParameterExpansionContext;

import springfox.documentation.spring.web.readers.parameter.ExpansionContext;

import springfox.documentation.spring.web.readers.parameter.ModelAttributeField;

import springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander;

import java.beans.BeanInfo;

import java.beans.IntrospectionException;

import java.beans.Introspector;

import java.beans.PropertyDescriptor;

import java.lang.reflect.Field;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

import static com.google.common.base.Objects.equal;

import static com.google.common.base.Predicates.*;

import static com.google.common.base.Strings.isNullOrEmpty;

import static com.google.common.collect.FluentIterable.from;

import static com.google.common.collect.Lists.newArrayList;

import static com.google.common.colle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值