2017-10-07 9 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; 
} 

목표가 컨트롤러에서 직접 리턴하는 것이면 대신 기본 컨트롤러를 정의 할 수 있습니다.

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