我有多个返回IResult
的服务,不想使用最小API结构,但我想使用相同的返回类型IResult,但当我在控制器中使用它时,它总是返回Ok:
返回400错误请求的最小API示例:
app.MapPut("test", async () =>
{
return Results.BadRequest("hello");
});
返回200 Ok的经典控制器:
[ApiController]
public class TestController : ControllerBase
[HttpPut("test")]
public async Task<IResult> Test()
{
return Results.BadRequest();
}
有没有简单的方法来解决这个问题,或者我需要一个Map函数?
我正在使用.NET 6。
3条答案
按热度按时间wztqucjr1#
从技术上讲,您可以在
ControllerBase
的上下文中调用IResult.ExecuteAsync
:但一般来说,最好遵循标准模式,在这种情况下,让您的服务返回一些定制的应用程序特定的响应,这是“平台不可知的”,即它不应该依赖于所使用的Web框架,并代表一些业务/域相关的实体/数据。例如
FluentResults
,或者使用某种Either
(这里有许多选项CSharpFunctionalExtensions、language-ext、Optional等)来增加功能。laik7k3q2#
现在.NET 7支持此功能。
2q5ifsrm3#
点击它的URL是**/test**