StatusCode助手方法

时间:2017-10-07 22:05:35

标签: asp.net-web-api asp.net-core asp.net-core-webapi

我正在为我的ASP.NET Core 2.0 API方法创建一个帮助方法,该方法将根据我从后端逻辑获得的响应返回状态代码。我正在创建辅助方法来消除多种API方法中的重复代码。

我不确定我的帮助方法需要返回什么数据类型。这是我到目前为止所得到的:

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方法中调用helper方法:

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()方法返回什么内容?是Microsoft.AspNetCore.Http.StatusCodes吗?

1 个答案:

答案 0 :(得分:0)

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

public const int Status200OK = 200;

声明int

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

如果您的目标是直接从Controller返回,则可以改为定义基本控制器。

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);
    }
}