使用Web Api .NET创建响应的自定义实体

时间:2018-01-19 14:41:05

标签: .net api generics entity response

我在.NET c#中使用web api,但我不理解不同的响应... Becouse,我正在尝试创建一个标准来将我的服务与前端同步(来自javascript的ajax调用) ...

我创建下一个实体:

public class CustomResponse<T>
{
    public bool isValid { get; set; }
    public string message { get; set; }
    public T data { get; set; }

    public CustomResponse()
    {

    }

    public CustomResponse(bool isValid, string message, T data)
    {
        this.isValid = isValid;
        this.message = message;
        this.data = data;
    }

    public CustomResponse(bool isValid, string message)
    {
        this.isValid = isValid;
        this.message = message;
    }
}
控制器中的

    [HttpGet]
    [Route("all")]
    public CustomResponse<List<Client>> All()
    {
        try
        {
            var result = bllClients.All();
            return new CustomResponse<Client>(true, "sucessful", result);
        }
        catch (Exception ex)
        {
            return new CustomResponse<Client>(false, ex.Message);
        }
    }

然后在客户端JS:

function getAll() {
   $.ajax({
       ....
       ....
      success: function(data) {
         if(data.isValid) {
           //do something
         } else {
            alert(data.message);
         }
      }
   });
}

这个选项有效吗??? 或者有一些更优化的方式

1 个答案:

答案 0 :(得分:0)

为什么不使用IHttpActionResult?

像这样:

[HttpGet]
[Route("all")]
public IHttpActionResult All()
{
    try
    {
        var result = bllClients.All();
        return Ok(result)
    }
    catch (Exception ex)
    {
        return InternalServerError(ex); 
    }
}

了解更多信息请查看此文章: https://www.exceptionnotfound.net/http-status-codes-in-asp-net-web-api-a-guided-tour/