在web api中处理自定义错误响应

时间:2014-05-23 11:45:13

标签: c# asp.net-web-api controller

我正在使用.net WEB API构建REST API。

以下是示例代码

public class ValuesController : ApiController
    {

        // GET api/values
        public Values Get(int ID, int userID)
        {
            return new Values(){};
        }
}

现在我要做的是,如果userID不在允许的用户ID列表中,则返回另一个类。我在考虑抛出一个例外,但在我考虑之后,我认为这不是一个好主意。原因是该过程是以OK状态处理的。

基本上我想返回一个自定义的ErrorMessage对象而不是Values对象。有可能吗?

1 个答案:

答案 0 :(得分:1)

当您的代码流遇到异常情况时,IMO抛出异常是有效的。

如果您仍然不想抛出,可以创建一个描述结果的包装类:

public class ValueResponse
{
   public HttpStatusCode HttpStatus { get; set; }
   public string ErrorMessage { get; set; }
   public Values Values { get; set; }
}

并返回该对象

public class ValuesController : ApiController
{

    // GET api/values
    public ValueResponse Get(int ID, int userID)
    {
        // Send a valid response or an invalid with the proper status code
    }
}