Events 如何在事件中使用OpenAPI/Swagger规范?
用于记录和运行针对HTTP API的自动化测试 规范是否也支持事件驱动的微服务体系结构,在这种体系结构中,记录在不同服务之间传递的事件负载非常重要,即使这些服务没有通过HTTP路径访问Events 如何在事件中使用OpenAPI/Swagger规范?,events,swagger,microservices,event-driven,Events,Swagger,Microservices,Event Driven,用于记录和运行针对HTTP API的自动化测试 规范是否也支持事件驱动的微服务体系结构,在这种体系结构中,记录在不同服务之间传递的事件负载非常重要,即使这些服务没有通过HTTP路径访问 由于我所看到的一切都是通过HTTP路径基于API的,我想知道Swagger如何处理这个问题?如果您有强类型事件,您可以使用反射来发布事件的结构,这对于您的微服务的客户端来说应该足够了 如果有一些事件描述符(xml或类似的)用于从事件存储/事件日志中重新生成事件,则可以发布这些事件 否则,除了事件,我不知道有任何工
由于我所看到的一切都是通过HTTP路径基于API的,我想知道Swagger如何处理这个问题?如果您有强类型事件,您可以使用反射来发布事件的结构,这对于您的微服务的客户端来说应该足够了 如果有一些事件描述符(xml或类似的)用于从事件存储/事件日志中重新生成事件,则可以发布这些事件
否则,除了事件,我不知道有任何工具可以像Swagger一样工作。我认为您可以在Swagger中定义,即使它们没有被任何端点使用。只需在专用部分声明您需要的任何类型,例如“定义”。您可以将在端点中使用的引用为,例如,
“$ref”:“#/definitions/User”
我希望会为它们生成代码,这样您就可以针对任何定义编写测试。如果您使用的是Java,那么还有另一种选择。我从未对此进行过测试,但这个想法可以指导您为其他平台找到解决方案 您可以使用“good”和oldJavadoc以及来自的Swagger模块,如下所述: 您可以使用Enouncate从Javadoc生成swagger ui,它有一个swagger模块
它只是一个maven插件。最后,从JavaDocs中获取的服务的完整HTML文档支持通过顶级
webhooks
属性的事件。对于处理OAS 3.0及更低版本的工具,OpenAPI规范只能支持定义模式,因此对于在事件驱动系统中定义事件非常有用。这样的定义也可以被OpenAPI生成器等codegen工具用来为Java、Swift、Go等语言自动创建模式对象
OpenAPI 3.1
OpenAPI规范3.1在此处定义了webhook支持:
- 等级库定义:
- 规范示例:
异步API 是事件驱动体系结构的规范。它与协议无关,因此可以与Kafka、Websocket、MQTT、AMQP和基于消息传递的任何其他工具一起使用
OpenAPI/Swagger 2.0 对于Swagger Spec 2.0(又名OpenAPI Spec 2.0),您可以在Swagger Spec中包含alamar提到的定义。Swagger Codegen将自动为这些定义创建模型类,即使它们不与任何路径关联。我构建并维护了一个包含如下事件的Swagger Spec/Codegen。您可以在下面的文件夹中看到自动生成的Class/structs Swagger Codegen构建,过滤以
\u event.go
结尾的20个文件。这些是当前使用创建的
- 生成的文件:
- Codegen信息:
- 示例:
- 定义: