REST API, как обрабатывать меньше результатов, чем LIMIT - PullRequest
0 голосов
/ 05 августа 2020

У меня есть REST API, который возвращает список продуктов на основе входных параметров. Тело запроса выглядит следующим образом:

{
      "param1": "xxx",
      "param2": "yyy",
      "limit": 50
}

Ответ выглядит следующим образом:

{
    "products": [
        543535,
        234324,
        5354,
        5354333
    ]
}

Как мне действовать в ситуации, когда я возвращаю меньше продуктов, чем указано пользователем? Вариант использования действителен, поэтому ошибки не должны возвращаться, но я хочу уведомить своих клиентов о том, что существует меньше используемых продуктов, чем указано.

Пока что я могу придумать два подхода:

  1. Отправить код частичного содержимого HTTP 206. Я бы предпочел этот метод, так как он наименее навязчив и имеет смысл с точки зрения логики c бизнеса. Однако я не уверен, правильное ли это использование кода HTTP 206 или чистый дизайн REST API.

  2. Добавьте тег в тело ответа, указывающий на очевидное, например:

{"message": "Меньше продуктов, чем запрошено.", "Products": [543535, 234324, 5354, 5354333]}

Мне лично такой подход не нравится поскольку выглядит как очевидное и загромождает тело ответа.

Есть ли какие-нибудь другие подходы, которые я мог бы использовать, чтобы вызвать какую-то «мягкую ошибку» для этого варианта использования?

1 Ответ

0 голосов
/ 05 августа 2020

Отправить код частичного содержимого HTTP 206. Я бы предпочел этот метод, поскольку он наименее навязчив и имеет смысл с точки зрения логики c бизнеса. Однако я не уверен, правильное ли это использование кода HTTP 206 или чистый дизайн REST API.

Это неправильное использование или чистый дизайн REST.

Коды состояния метаданные транспортных документов по сетевому домену . Бизнес логи c обоснования не актуальны. Одна из центральных тем REST заключается в том, что семантика сообщений с самоописанием одинакова для всех ресурсов на inte rnet.

206 Частичное содержимое происходит из нашего стандарта запросов диапазона. - указывает на то, что полезная нагрузка ответа НЕ является полным представлением ресурса, а вместо этого является его частью.

     HTTP/1.1 206 Partial Content
     Date: Wed, 15 Nov 1995 06:25:24 GMT
     Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
     Content-Range: bytes 21010-47021/47022
     Content-Length: 26012
     Content-Type: image/gif

     ... 26012 bytes of partial image data ...

В вашем случае возвращаемое представление является полным представлением ресурса, так что 206 не подходит. 200 OK - это семантически правильный код состояния, который следует использовать.

С другой стороны, включение в ваши представления метаданных c, связанных с доменом, вполне уместно. По сути, он становится просто еще одним полем в вашей схеме сообщения.

...