2

我们使用 SwashBuckle 配置我们的 AspNet Core(服务结构)项目以生成 Swagger json 和 UI。然后我们使用 NSwagStudio 从 nswag.json 模板中生成 typescript 和 C# 客户端,并使用 Swashbuckle 生成的 swagger。

最近,最新版本的 NSwagStudio 发生了一些变化,它生成的客户端带有添加到响应对象的空检查。我们现有的控制器返回空响应,因此客户端已停止工作。

我们的示例控制器端点声明:

[HttpPost]
[ODataRoute]
[Produces("application/json")]
[ProducesResponseType(typeof(IActionResult), Status200OK)]
public Task PostXXX() => ...;

我们生成的客户端(之前)

//----------------------
// <auto-generated>
//     Generated using the NSwag toolchain v13.6.2.0 (NJsonSchema v10.1.23.0 (Newtonsoft.Json v12.0.0.0)) (http://NSwag.org)
// </auto-generated>
//----------------------

var status_ = ((int)response_.StatusCode).ToString();
if (status_ == "200") 
{
      var objectResponse_ = await ReadObjectResponseAsync<IActionResult>(response_, headers_).ConfigureAwait(false);
      return objectResponse_.Object;
}

我们生成的客户端(之后)

//----------------------
// <auto-generated>
//     Generated using the NSwag toolchain v13.7.0.0 (NJsonSchema v10.1.24.0 (Newtonsoft.Json v12.0.0.0)) (http://NSwag.org)
// </auto-generated>
//----------------------

 var status_ = (int)response_.StatusCode;
if (status_ == 200)
{
     var objectResponse_ = await ReadObjectResponseAsync<Void>(response_, headers_).ConfigureAwait(false);
     if (objectResponse_.Object == null)
     {
            throw new Exception("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
     }
     return objectResponse_.Object;
} 

问题是我们如何告诉 SwashBuckle 标记这个控制器端点可以返回可为空的响应?换句话说,我正在寻找类似于 Swashbuckle 世界中 NSwag 中可用的东西: https ://github.com/RicoSuter/NSwag/wiki/AspNetCoreOpenApiDocumentGenerator#response-nullability

此 github 问题中的更多详细信息 https://github.com/RicoSuter/NSwag/issues/3011

如果您需要更多信息,请告诉我。

4

0 回答 0