gpt4 book ai didi

java - 如何屏蔽自动生成的 swagger java 类中的任何参数

转载 作者:行者123 更新时间:2023-12-02 06:01:44 34 4
gpt4 key购买 nike

如何屏蔽自动生成的 swagger java 类中的任何参数?
如果手动 getter setter 类,我们可以编辑 toString 方法,但在自动生成的类中,它将在每次构建时生成 swagger pojo 类,那么如何修改由 swagger 自动生成的 toString 方法?

下面是代码

api.yml(通过swagger生成POJO类)

InsuredDTO:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
nric:
type: string

toString自动生成POJO类中的方法

@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class InsuredDTO {\n");

sb.append(" id: ").append(toIndentedString(id)).append("\n");
sb.append(" name: ").append(toIndentedString(name)).append("\n");
sb.append(" nric: ").append(toIndentedString(nric)).append("\n");
sb.append("}");
return sb.toString();
}

LoggingAspect类中添加一些日志

log.debug("Enter: {}.{}() with argument[s] = {}", joinPoint.getSignature().getDeclaringTypeName(),
joinPoint.getSignature().getName(), Arrays.toString(joinPoint.getArgs()));

在此日志中 joinPoint.getArgs() 具有包含 ID 名称和 nric 的完整 toString 数据,这里我想显示屏蔽 nric 而不是直接 nric 值(value)。

如果它不是自动生成的类,那么我们可以在 toString 方法中添加如下内容。

sb.append("nric: ").append("********").append("\n");

但是在自动生成的类的情况下,有什么方法可以仅出于日志记录目的屏蔽任何属性吗?

我尝试在 yml 文件中使用标志,如下所示

properties:
id:
type: integer
format: int64
nric:
type: string
format: password

但这也没有以预期的方式格式化属性。

最佳答案

我在一个旧项目上添加了类似的要求,我使用了一个扩展字段(请参阅 OpenAPI 3.0 Spec ,文件结尾),例如 x-nolog 和自定义代码生成器:

架构示例:

User:
type: object
required:
- name
- password
x-nolog:
- password
properties:
name:
type: string
password:
type: string

要创建自定义代码生成器,您可以看到:

关于java - 如何屏蔽自动生成的 swagger java 类中的任何参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55971295/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com