Какой самый эффективный способ проверить данные http-ответа

Например, когда я делаю http-запрос ниже:

ПОЛУЧИТЬ / myBox

И ожидаем ответа данных в формате json:

{
  a: (expecting a number),
  b: (expecting a string),
  c: (expecting 'apple', 'orange', or 'banana')
}

Тогда предположим, что наша серверная программа никогда не допускала ошибок. Нужно ли нам проверять данные содержимого ответа в случае какой-либо чистой ошибки? И если нужно, то каков наиболее эффективный способ проверить все данные ответа.

🤔 А знаете ли вы, что...
С JavaScript можно создавать расширения для различных платформ, таких как Adobe Acrobat и Microsoft Office.


171
3

Ответы:

Вы как бы проверяете данные ответа, когда устанавливаете тип данных полей, которые вы ожидаете в объекте ответа.

Например:-

предположим, что это ваш класс, который вы ожидаете в качестве объекта ответа: -

    public class example {
private String field1;
private int field2;
private bloolean field3;
}

Если в приведенных выше полях вы получите field1 как long вместо String, вы получите ошибку, которая проверяет, дает ли сервер ожидаемый ответ или нет.


Лучше всего создать предсказуемую полезную нагрузку JSON, которая поступает с вашего сервера как в случае успеха, так и в случае ошибки. Например, если мы столкнемся с ошибкой, возможно, полезная нагрузка будет такой:

{ error: true, errorMessage: 'Some error message', payload: null }

В случае ошибок, связанных с сетью, вам необходимо обработать соответствующие коды состояния HTTP в вашем клиентском приложении. Подробнее об этом здесь: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

Если вы хотите разработать ребристую схему для данных, передаваемых от сервера к клиенту, вам может потребоваться более подходящий для этого формат, например Protobuf.

Видеть:


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

Один из способов проверить ответ в этом случае - использовать что-то вроде json-schema.

Однако, если вы не имеете дело со многими серверами, возможно, вы спросите себя, при каких условиях ответ может быть неправильным. У вас есть причина не доверять этому?