StatusCode 辅助方法

StatusCode Helper Method

我正在为我的 ASP.NET Core 2.0 API 方法创建一个辅助方法,它将 return 基于我从后端逻辑获得的响应的状态代码。我正在创建辅助方法来消除多个 API 方法中的重复代码。

我不确定我的辅助方法需要什么数据类型 return。到目前为止,这是我得到的:

public static StatusCodes GetHttpStatus(string type)
{
   // I have some logic that I process here
   switch(type)
   {
       case "Success":
          return StatusCodes.Status200Ok;
       case "Unauthorized":
          return StatusCodes.Status401Unauthorized;
   }
}

我想从我的 API 方法调用辅助方法:

public async Task<IActionResult> Get()
{
    // Call my backend and get data
    var response = await _myServiceMethod.GetData();

    if(response.Type == "Success")
       return Ok(response.Data);

    return HelperMethods.GetHttpStatus(response.type);
}

我的 GetHttpStatus() 方法需要 return 什么?是Microsoft.AspNetCore.Http.StatusCodes吗?

Microsoft.AspNetCore.Http.StatusCodes 成员是 int 值。

public const int Status200OK = 200;

所以声明int.

public static int GetHttpStatus(string type)
{
    case "Success":
        return StatusCodes.Status200OK;
}

如果您的目标是直接从控制器 return 您可以定义一个基础控制器。

public abstract class BaseApiController<T> : Controller where T : MyApiContent
{
    public virtual IActionResult ApiResult(string status, T content)
    {
        switch(status) 
        {
            case "Success":
                return Ok(content);
            case "Unauthorized":
                return Unauthorized();
        }
    }
}

public class MyApiContent
{
}

public class MyApiController : BaseApiController<MyApiContent>
{
    public async Task<IActionResult> Get()
    {
        MyApiContent content = await GetData();

        return ApiResult(content.type, content);
    }
}