我想指定永远不应该从端点发送的字段。例如,假设我要确保没有端点响应user.passwordHash
。
OpenAPI中是否存在additionalProperties: false
或required: true
的反义词?
答案 0 :(得分:1)
您可以将属性定义为字符串,并将最大长度设置为零。没有什么特别说明additionalProperties: true, except for passwordHash
。
type: object
properties:
passwordHash:
type: string
format: password
maxLength: 0
或者,您可以在发送之前先遍历对象,然后删除不需要的属性。例如:
function removeProperty(property, value) {
if (Array.isArray(value)) {
return value.map(item => removeProperty(property, item))
} else if (value && typeof value === 'object') {
const result = {}
Object.keys(value)
.forEach(key => {
if (key !== property) {
result[key] = removeProperty(property, value[key])
}
})
return result
} else {
return value
}
}
const object = {
x: {
y: {
z: 1,
secret: 'password'
}
}
}
const clean = removeProperty('secret', object)
console.log(clean) // => { x: { y: { z: 1 } } }
答案 1 :(得分:1)
OpenAPI 3.0为此提供了writeOnly
关键字:
将属性声明为“只写”。因此,它可以作为请求的一部分发送,但不应作为响应的一部分发送。
因此,只需将相应的属性标记为writeOnly: true
:
passwordHash:
type: string
writeOnly: true
在相反的情况下也有readOnly
-属性不应在请求中发送,而应在响应中发送。 readOnly
同时存在于OpenAPI 3.0和2.0中。