You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core API中使用IResult返回单一类型结果?

ASP.NET Core 7控制器中使用IResult返回单一类型的最佳实践

问题背景

我计划使用ASP.NET Core 7和控制器开发新API,希望遵循最佳实践返回类型化结果以简化文档。

原本使用ActionResult<List<Products>>的代码可行:

[HttpGet()]  
public ActionResult<List<Products>> GetAllProducts()
{
    var beers = repository.GetAllProducts();

    return beers;
}

但出于一致性考虑,我想改用IResult的派生类返回结果,直接使用Results<Products>会报错,因为Results要求至少两种返回类型:

[HttpGet()]  
public Results<Products> GetAllProducts()
{
    var beers = repository.GetAllProducts();

    return beers;
}

临时添加一个不需要的BadRequest类型虽然能运行,但不合理:

[HttpGet()]  
public Results<Products,BadRequest> GetAllProducts()
{
    var beers = repository.GetAllProducts();

    return beers;
}

请问若要使用IResult且仅返回一种类型,推荐的返回类型是什么?还是只能使用ActionResult<List<Products>>?我希望代码更简洁现代,只想使用基于IResult的类型,不想混合IActionResult。

解决方案

方案1:直接返回IResult配合Results.Ok()

这是最简洁的方式,完全基于IResult体系,无需指定多余的返回类型:

[HttpGet()]  
public IResult GetAllProducts()
{
    var products = repository.GetAllProducts();
    return Results.Ok(products);
}

方案2:使用TypedResults.Ok增强类型提示

如果需要更精准的类型信息以优化API文档生成,可以用TypedResults的强类型方法:

[HttpGet()]  
public IResult GetAllProducts()
{
    var products = repository.GetAllProducts();
    return TypedResults.Ok(products);
}

这两种方案都不需要依赖IActionResult,符合现代、简洁且统一的IResult返回风格,同时能让API文档工具正确识别返回结构。

内容的提问来源于stack exchange,提问作者Joe Markov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 02:22:49