Pull to refresh

Comments 8

Практически все пункты можно объяснить всего одной фразой «Обратная совместимость», особенно если это совместимость с какими-нибудь гос-сервисами, там обычно такой ужас, что волосы выпадают.

Конечно, если человек сознательно так делает, то надо его приложить чем-нибудь, но все же зачастую это просто необходимость.
Статья и не писалась с целью — всё это плохо, не работайте с такими API Главный посыл — уделите больше времени дизайну будущего использования API.
В примерах представлены API компаний (как иностранных, так и отечественных), которые предоставляют состояние доступности номеров в комнатах — интеграция с гос-сервисами там очень маловероятна.
Такие ошибки бывают у API, которыми пользуются уже пару лет и те которые только запустились, поэтому чаще всего это проблема дизайна систем.
Я общался с разработчиками этих систем — в большинстве случаев ответ таков, что все эти пользуются, поэтому существенные изменения мы вносить не можем или это экономически неоправданно.
В особо редких случаях, после технического объяснения улучшений, они меняли API и потом говорили спасибо, так как это снижало нагрузку.

А как вам:
SOAP. Поле ответа Error. Цитирую разработчика "Если оно непустое(sic!), значит ошибки нет" WTF?! 8-O?!
Я не знаю, что у человека было в голове (1С-ник, кстати), но "поймали" на этапе разработки протокола, и пресекли...

Я тоже работал по SOAP с 1С-ником. И я тоже не знаю что там было в голове, не завидую тем, кто сейчас тот проект поддерживают :)
Если вы предоставляете WSDL для вашего API, то пусть все типы данных там будут any. Или object, я точно не помню.
Или строки. Были и такие, которые передовали логическую переменную строкой с цифрой. «1» — истина, и «0» — ложь. Через год использования,внезапно, стало приходить значение «2», но они быстро починили эту проблему.
В данном случае я задумался и даже спросил у компании, предоставляющей API, о смысле поля Info и о том, будет ли отличаться информация в тегах различного уровня. Ответ мне был: нет, не будет – они дублируют друг друга. Зачем вводить пользователей в заблуждение и делать ответ более тяжёлым, если в этом нет необходимости?

А если обьект `ObjSetting` используется еще где-то, а там это информация тоже нужна?
Да, я могу представить, что они собирают несколько сущностей из базы данных и итоговый объект является ответом для нас. В голову приходит 2 способа решить эту проблему.
Первый: хранить данные по другому, без дублирования.
Второй: из сущностей собирать объект-отображение (отделение данных от их представления), в котором не будет задвоений.
Sign up to leave a comment.