【发布时间】:2020-08-07 18:16:48
【问题描述】:
我有点迷失在定义、生成的代码和许多有点像黑盒子的东西之间,即使在调试之后也是如此。
但让我们从头开始。我有一个使用 NestJS 作为框架的节点编写的 API。 NestJS 自动创建 swagger/openapi json 文件。我使用 swagger-codegen 创建了一个 PHP 类来从另一台服务器访问 API。像一个简单的 API 请求的魅力一样工作。
现在的问题是 API 请求返回更大的响应,即来自一个或多个数据库的 >1000 行。不要让客户端等待很长时间,并在我已切换到 NDJSON 的服务器上创建一个大的 JSON 响应,它将响应拆分为较小的 JSON 部分块,每个部分都在它自己的行上。当我使用 curl 或使用 fopen 和 fread 的 PHP 中的 HTTP 包装器手动创建我的请求时,这也有效。响应类型为 application/x-ndjson。
但是 swagger-codegen 生成的代码总是等到收到整个响应。更糟糕的是,因为它无法使用 json_decode() 解码 NDJSON 并且只返回 null。下面使用 Guzzle,它使用 PSR7 流进行响应。
现在我可以跳过自动生成的 NDJSON 端点代码。但我不希望添加特殊处理并丢失所有有用的生成检查。
那么是否有可能让 swagger-codegen 访问响应流?我是否缺少 codegen 的参数或招摇 JSON 中的某些内容?它确实有一个带有 application/x-ndjson 的产品。
【问题讨论】:
标签: php swagger openapi swagger-codegen ndjson