AsyncAPI 和 Json-LD 响应

问题描述

我正在开发一个使用 JSON-LD 作为 Kafka 输入和输出格式的项目。现在,我想用 AsyncAPI 为我们的文档定义消息。但是我遇到了诸如@id 或@type 之类的建模属性问题。一旦我添加了“@”符号,AsyncAPI 就会提供一个错误。根据 JSON-LD 标准,JSON-LD 是有效的 JSON。那么,它应该与 AsyncAPI 一起使用正确吗?或者我的误会在哪里?

我们在您的 AsyncAPI 文档中发现以下错误: 第 17 行第 11 列映射条目的缩进错误: @ID: ^

解决方法

TLDR:仅仅因为它被允许这样做,并不意味着工具支持它。支持此功能的方法是在 parser 中创建功能请求。

虽然 JSON-LD 可能是有效的 JSON 并且绝对允许使用,但工具需要知道如何解释它。该规范有一组必需的架构 formats for which all tooling must support and others that are recommended。不幸的是,JSON-LD 目前不在该列表中,这就是您找到缺少的支持的原因。

我怀疑您使用了 AsyncAPI 游乐场之类的东西,这给了您这个错误?

在这种情况下,问题的根源在于解析 AsyncAPI 文档的解析器无法识别您提供的格式。您可以在此处阅读更多相关信息:https://github.com/asyncapi/parser-js#custom-message-parsers

为简单起见,您定义的任何有效负载架构,可能是 RAMLOpenAPI schemaAVRO 或任何其他,甚至 JSON-LD,都在幕后转换为 {{ 3}}。这样做的原因是,如果他们需要理解所有这些不同的格式,那么工具的复杂性就太高了。

因此,虽然可以使用 JSON-LD 定义有效负载,但这并不一定意味着工具支持它。

因此,您介意为此功能添加 JSON Schema 吗?