我花了很多时间试图找到在Node.JS中创建swagger文档的解决方案。主库是swagger-node,在其中创建一个swagger yaml文件,然后将控制器添加到它。它会自动在您的应用中提供swagger ui文档,并根据请求进行验证。针对您在yaml中指定的模型的响应。
这很简洁,但是我要求某些字段我想明确地返回或接受null
作为值,例如:
{
id: 123,
description: "string",
date_sent: null
}
我不想删除date_sent
密钥,我想明确地将其声明为null。
swagger规范不支持anyOf
这就是JSON模式通常如何做到这一点我相信。
我想知道是否有解决方法?也许某些库可用于具有x-nullable
供应商特定标志的节点,您可以添加,或者某种方式指定我的非必需字段都应该可以为空。
我是否必须自己写一些带有我的swagger文件然后在验证器中间件运行之前修改它的东西,或者是否有某些可以建议的解决方法?
答案 0 :(得分:13)
nullable
字段,但不支持v2.0。可空类型定义如下:
# Can be string or null
type: string
nullable: true
答案 1 :(得分:11)
答案 2 :(得分:4)
您可以使用默认属性而不是在type属性中添加null。
Swagger.json属性定义示例:
"due_date": {
"type": "string",
"description": "Due date",
"default": "null"
},
这是一个有效的Swagger类型定义,并且仍然在Swagger UI中按预期显示。
答案 3 :(得分:0)
只是一个提示,因为我偶然发现了这一点:添加时
type: string
nullable: true`
如答案https://stackoverflow.com/a/42797352/2750563中所述,我的服务仅返回"fieldName": { "present": true }
而不是实际值!
如果看到此消息,只需将JsonNullableModule
添加到您的Jackson序列化程序中,例如,如果使用Spring:
@Component
public class JacksonConfiguration {
@Autowired
public void configureJackson(ObjectMapper mapper) {
mapper.registerModule(new JsonNullableModule());
}
}
然后一切看起来都很好。