Web API - 正确响应客户端

时间:2017-06-02 08:24:41

标签: api asp.net-web-api2

如果请求成功,我们对客户端的响应格式如下:

{
  "ExitCode": 1,
  "ErrorMessage": "",
  "NumberOfGreenBoxMatches": 4,
  "NumberOfPinkBoxExtractFrames": 5,
  "ProcessingTime": 4000,
  “HasOverlay”: false;
  "MatchResult": "...."
}

如果客户端请求错误或发生内部错误,客户建议退回以下内容:

{
  "ExitCode": -10,
  "ErrorMessage": "Internal error parsing pink boxes. Please contact tech support",
  "NumberOfGreenBoxMatches": 0,
  "NumberOfPinkBoxExtractFrames": 0,
  "ProcessingTime": 1240,
  “HasOverlay”: false;
  "MatchResult": ""
}

是正确的方法(返回类似的json)?我的意见不是,我们应该只返回

{ "ErrorMessage": "Internal error parsing pink boxes. Please contact tech support" }

并更正HttpCode。什么是正确的方法?

2 个答案:

答案 0 :(得分:2)

您对正确方法的建议看起来更兼容HTTP-standart。因为ExitCode看起来像HTTP响应代码功能重复。

但我认为最终解决方案在很大程度上取决于客户端架构。您必须考虑以下问题:

  • 客户端是否解析HTTP代码?
  • 客户端如何验证服务器响应?
  • 服务器错误响应是否必须与常规响应JSON模式兼容?
  • 您的客户是否必须始终在ProcessingTime等字段中接收值

答案 1 :(得分:-1)

使用模型接收Web API的结果,此处客户端使用的模型是

public class MyResult
{
    public int ExitCode { get; set; }
    public string ErrorMessage { get; set; }
    public int NumberOfGreenBoxMatches { get; set; }
    public int NumberOfPinkBoxExtractFrames { get; set; }
    public int ProcessingTime { get; set; }
    public bool HasOverlay { get; set; }
    public string MatchResult { get; set; }
}

如果您在发生错误时发送了不同的结果,该结果具有单一属性" ErrorMessage",则无法在客户端处理它。

因此,您可以根据客户提出的确切模型更好地提供信息。