gpt4 book ai didi

c# - 从 WebApi 自定义方法返回 BadRequest

转载 作者:行者123 更新时间:2023-12-02 20:16:56 26 4
gpt4 key购买 nike

此处使用 .net core Web api。

我的 api 中有一个端点:

[HttpPost("data")]
public async Task<IActionResult> PostData(List<string> udata)
{
JArray sets = new JArray();
try
{
sets = Helper.GetData(udata);

}
catch (Exception e)
{
return StatusCode(500, e.Message);
}
}

在上面,我在助手“GetData”中调用自定义方法,该方法执行所有处理和计算。为了使 Api Controller 干净,我将所有处理移至此辅助方法。

下面是我的助手类:

public static class Helper
{
public static BadRequestObjectResult GetMessage(string message)
{
return new BadRequestObjectResult(message);
}

public static JArray GetData(List<string> udata)
{
if(udata == null)
return GetMessage("Data is null");

//do some processing and calclulations here
//return BadRequest if some issue

}
}

如果存在一些处理问题或某些数据不符合预期或其他一些问题,我想抛出 BadRequest。为此,我创建了一个自定义方法“BadRequestObjectResult”。

现在我的问题是,如果 GetData 中存在问题,它不会返回到我的 api 或从我的循环中退出。它只是继续下一个语句。

我知道我返回此邮件的方式存在一些问题,但无法找到问题。

谁能指出处理这个问题的正确方法?

最佳答案

我的建议是从 Helper 类中抛出异常,并从 PostData 方法中处理它。例如...

您可以抛出 ArgumentException 并从 API 方法中显式捕获该异常。

public static class Helper
{

public static JArray GetData(List<string> udata)
{
if(udata == null)
throw new ArgumentException("Data is null");

//do some processing and calclulations here
//throw ArgumentException if there is an issue

}
}

[HttpPost("data")]
public async Task<IActionResult> PostData(List<string> udata)
{
JArray sets = new JArray();
try
{
sets = Helper.GetData(udata);
return Ok(sets);
}
catch (ArgumentException e)
{
return BadRequest(e.Message);
}
}

这样,您只需担心 Controller 的返回代码,而您的 Helper 方法只关心输入,不会返回专门用于 Controller 的内容。如果您想在其他地方使用 Helper 类,这样会更灵活一些。

这也将满足您在遇到错误结果时停止处理的要求,因此一旦遇到错误结果,结果集就会被丢弃,并发出 BadRequest 响应。

关于c# - 从 WebApi 自定义方法返回 BadRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52187459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com