包含错误和成功消息的混合类型的响应有效负载的Http响应代码

时间:2018-09-27 07:27:05

标签: rest api http http-response-codes

我正在开发一种API,该API可以接受以下格式的多张图片上传请求:

    {
      "images"[
        {"url": 'www.xyz/image1.jpg', 'type': 'abc'}, 
        {"url": 'www.xyz/image2.jpg', 'type': 'def'}
      ]
    }

响应包含每个图像的成功和失败消息:

    {
      "error": {
        abc": "Error while downloading image: servname or nodename not known"
      },
      "success": {
        "def": "image got uploaded successfully"
      }
    }

现在,我想知道该响应可能仅包含成功,仅错误或成功与错误消息的混合,应该为该响应返回什么状态代码。应该为此使用通用状态代码,还是根据响应中是否仅包含错误,成功或两者,状态代码应该不同?

2 个答案:

答案 0 :(得分:1)

考虑WebDAV RFC中定义的[207 Multi-Status Response][1]

  

多状态响应传达有关多种资源的信息      在可能需要多个状态代码的情况下。的      默认的多状态响应主体是text / xml或application / xml      具有“ multistatus”根元素的HTTP实体。其他元素      包含在此期间生成的200、300、400和500系列状态代码      方法调用。不应记录100系列状态代码      在“响应” XML元素中。

答案 1 :(得分:0)

您可以返回HTTP响应200,并让响应主体包含更多详细信息。 另外,您还应该有一种将请求映射到响应的方法,以便您知道哪个成功/错误消息与哪个请求相对应。 您可以将请求发送为:

{
  "images" : [
    {"key": "1", "url": 'www.xyz/image1.jpg', 'type': 'abc'}, 
    {"key": "2", "url": 'www.xyz/image2.jpg', 'type': 'def'},
    {"key": "3", "url": 'www.xyz/image3.jpg', 'type': 'abc'}
  ]
}

并且响应正文为200 OK:

{
  "images" : [
    {"key": "1", "status": "success", "message": "OK"}, 
    {"key": "2", "status": "failure", "message": "some specific error"},
    {"key": "3", "status": "failure", "message": "some specific error"}
  ]
}