2017-10-07 111 views
1

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

我不确定我的帮助器方法需要返回哪种数据类型。下面是我到目前为止有:

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

回答

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