如何处理 FileResponse return 类型的 Nswag 方法
How to handle FileResponse return type of Nswag methods
我正在使用 Nswag 生成客户端库以使用从 .NET Core 应用程序创建的 API。
目前我正在使用 returns IActionResult
的操作来受益于 return NotFound();
和 return Ok(objectValue);
等方法
如果 return 类型是 IActionresult
从 Nswag 生成的 Csharp 客户端方法具有 return 类型 FileResponse
.
如果我将 return 类型更改为某个 class,则相同的 return 类型将从生成的方法中 returned。这将阻止使用我之前提到的好处。
通常 return 类型来自已知的 return 类型,而不是 return 匿名类型。
我已经设法从 FileResponse
读取 Stream
并使用通用方法将其转换为对象 JsonConvert.DeserializeObject<T>(value);
来获得响应,但这似乎需要额外的工作完成。
我是否缺少处理 FileResponse
return 类型的内容?是不是从IActionResult
改成已知对象比较好?
我设法通过将操作更改为 return ActionResult<ObjectType>
而不是 IActionResult
来解决问题。有关详细信息,请查看 答案。
NSwag 客户端生成器需要额外的注释才能生成准确的客户端代码。 FileResponse
is returned for IActionResult
- 如您所说。如果操作 returns 更多代码,则 ProducesResponseType
有帮助。
使用 IActionResult
的示例(返回字符串):
[ProducesResponseType(typeof(string), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[HttpPost("foo")]
public IActionResult FooAction([FromBody] string param)
示例使用 ActionResult<>
:
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[HttpPost("foo")]
public ActionResult<string> FooAction([FromBody] string param)
需要知道 ASP .NET Core 使用 ProblemDetails
(它是可配置的)用于使用内置无参数方法生成的错误代码。如果使用参数调用这些方法,那么 ProducesResponseType
将需要添加类型 - 如果没有它,将生成错误的代码。
我正在使用 Nswag 生成客户端库以使用从 .NET Core 应用程序创建的 API。
目前我正在使用 returns IActionResult
的操作来受益于 return NotFound();
和 return Ok(objectValue);
等方法
如果 return 类型是 IActionresult
从 Nswag 生成的 Csharp 客户端方法具有 return 类型 FileResponse
.
如果我将 return 类型更改为某个 class,则相同的 return 类型将从生成的方法中 returned。这将阻止使用我之前提到的好处。
通常 return 类型来自已知的 return 类型,而不是 return 匿名类型。
我已经设法从 FileResponse
读取 Stream
并使用通用方法将其转换为对象 JsonConvert.DeserializeObject<T>(value);
来获得响应,但这似乎需要额外的工作完成。
我是否缺少处理 FileResponse
return 类型的内容?是不是从IActionResult
改成已知对象比较好?
我设法通过将操作更改为 return ActionResult<ObjectType>
而不是 IActionResult
来解决问题。有关详细信息,请查看
NSwag 客户端生成器需要额外的注释才能生成准确的客户端代码。 FileResponse
is returned for IActionResult
- 如您所说。如果操作 returns 更多代码,则 ProducesResponseType
有帮助。
使用 IActionResult
的示例(返回字符串):
[ProducesResponseType(typeof(string), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[HttpPost("foo")]
public IActionResult FooAction([FromBody] string param)
示例使用 ActionResult<>
:
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[HttpPost("foo")]
public ActionResult<string> FooAction([FromBody] string param)
需要知道 ASP .NET Core 使用 ProblemDetails
(它是可配置的)用于使用内置无参数方法生成的错误代码。如果使用参数调用这些方法,那么 ProducesResponseType
将需要添加类型 - 如果没有它,将生成错误的代码。