c# - 如何在不返回对象、IActionResult 等的情况下在 ASP.NET Core 中返回自定义 HTTP 状态/消息?

标签 c# asp.net-web-api asp.net-core swagger

我有一个 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/

相关文章:

c# - 某些项目的依赖项包含无法解释的代码分析器

c# - 从零开始自动递增 PK - EF Core 代码优先

c# - 后备策略日志授权事件

c# - 如何编写支持对象初始值设定项的自定义 DynamicObject 类

c# - C++ cli ref class 数组转换为指针

azure - 使用环境变量为 Entity Framework 6 设置数据库上下文

c# - Asp.Net Web API 防止记录重复

asp.net-mvc - 扩展 ActionDescriptor FilterProvider 以允许类级别过滤器的依赖注入(inject)

c# - 读取 appsettings.json - 字段保持为空

c# - FormattedText.BuildGeometry 删除字符