我有一个 ASP.NET Core Web API 站点,启用了 Swagger 生成和 UI。为了让 Swagger 工作(至少自动工作),必须输入 Controller 方法的返回值。例如,
public async Task<Employee> LoadEmployee(string id)
但是,我需要从此操作返回自定义 HTTP 状态代码和内容。我见过的所有示例都使用 StatusCode 方法,或者返回一些其他对象。这样做的问题是 Swagger 不知道操作的返回类型是什么,因此无法生成 API 规范。
是否有某种方式(异常、 Controller 上的方法等)返回自定义代码/内容,同时保留签名?我见过使用自定义中间件的解决方案,但它似乎是一个足够常见的场景,应该有一些东西可以构建它。
最佳答案
您可以只使用 StatusCodeResult StatusCode(...)
返回状态代码和消息/对象。
public async Task<ObjectResult> LoadEmployee(string id)
{
var employee = await repository.GetById(id);
if(employee == null) {
return NotFound();
}
return StatusCode((int)HttpStatusCode.Ok, employee);
}
关于c# - 如何在不返回对象、IActionResult 等的情况下在 ASP.NET Core 中返回自定义 HTTP 状态/消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40774686/