Код ответа Http для полезной нагрузки смешанного типа, содержащей сообщения об ошибках и об успехе - PullRequest
0 голосов
/ 27 сентября 2018

Я разрабатываю 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 голосов
/ 27 сентября 2018

Вы можете вернуть 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"}
  ]
}
0 голосов
/ 27 сентября 2018

Рассмотрим [207 Multi-Status Response][1], определенный в WebDAV RFC .

В ответе о нескольких состояниях передается информация о нескольких ресурсах в ситуациях, когда может потребоваться несколько кодов состояния.Тело ответа Multi-Status по умолчанию представляет собой текстовый / xml или application / xml HTTP-объект с корневым элементом 'multistatus'.Другие элементы содержат коды состояния серий 200, 300, 400 и 500, сгенерированные во время вызова метода.Коды состояния серии 100 НЕ ДОЛЖНЫ записываться в элемент XML ответа.

...