Size: a a a

Saint P Ruby Community

2020 September 23

EM

Eugene Maslenkov in Saint P Ruby Community
BTW: может нужен кому-нибудь "стажер" админ (~10 лет опыта в разных локальных сетях) на нормальную админскую работу в Москве? (у меня сейчас знакомый ищет работу) https://hh.ru/resume/31bed52eff07c4c4e70039ed1f37345947754f
источник

m

max in Saint P Ruby Community
Eugene Maslenkov
мы в одном из проектов "грубо говоря" использовали три кода так:
200 success
400 - известная ошибка, например не прошла валидация или что-то подобное body: {error_code: 12345, error: message, some_additional_info ... }
500 - не известная ошибка
400 и 500 обрабатывались в ApplicationController-е, все известные ошибки наследовались от AppBaseError, по этому можно было просто сделать rescue_from AppBaseError -> 400; StandardError -> 500
другие коды старались не использовать, что бы "быстрее" отделять ошибки уровня rails от ошибок уровня nginx

логирование действительно отдельная тема, в выше упомянутом проекте было помимо info/debug/error было у логов еще что-то типа ttl, потому что некоторые логи занимали по 2mb (ответы external api) - такие логи жили час по дефолту, и их можно было "сохранить", если что-то пошло не так (всплеск ошибок). Логировалось буквально все.
вот такое мне уже больше нравится
источник

АД

Антон Дьячук... in Saint P Ruby Community
max
вот такое мне уже больше нравится
эм… ты же топил за "если апп смог отевтить - 200"
источник

m

max in Saint P Ruby Community
больше нравится != идеально
и человек достаточно подробно расписал как это работает и я понимаю его логику
что даже в случае ошибки есть error_code на которой можно ориентироваться не глядя на http status
вы себя таким не утруждали)
источник

EM

Eugene Maslenkov in Saint P Ruby Community
думаю, что здесь звезды просто сложились:
1. то, что писал Антон с error: ... я воспринял как "упрощенный" вариант того, что написал я
2. у Максима уже есть куча вариантов, а мой просто как "закрепляющий материал"
:)
источник

АД

Антон Дьячук... in Saint P Ruby Community
max
больше нравится != идеально
и человек достаточно подробно расписал как это работает и я понимаю его логику
что даже в случае ошибки есть error_code на которой можно ориентироваться не глядя на http status
вы себя таким не утруждали)
и не буду по одной простой причине: я не знаю что нужно фронту, в общем случае. Я не знаю что конкретно нужно в вашем, потому что из API формочки не открываются.
Поэтому для всех случаев бэкенд должен возвращать не 200 если что-то пошло не так
источник

EM

Eugene Maslenkov in Saint P Ruby Community
Антон Дьячук
и не буду по одной простой причине: я не знаю что нужно фронту, в общем случае. Я не знаю что конкретно нужно в вашем, потому что из API формочки не открываются.
Поэтому для всех случаев бэкенд должен возвращать не 200 если что-то пошло не так
👍💪
источник

EM

Eugene Maslenkov in Saint P Ruby Community
Приоткрою завесу:
в том проекте сначала возвращались по большей степени 200-е коды или муть какая-то XD. Меня это жутко раздражало 😊☺️. Находкой стало именно компромисное решение, где коды говорили только о факте - успех или нет, и были внутренние коды, по которым в нашем обилии логов уже можно было что-то искать.
Согласен с Антоном и Джоелем Спольским - в каждом проекте будет свое решение.
источник

АД

Антон Дьячук... in Saint P Ruby Community
пхпшники всегда отвечают 200 🙂
источник

АД

Антон Дьячук... in Saint P Ruby Community
и сидхи
источник

EM

Eugene Maslenkov in Saint P Ruby Community
а разве они не ситхи?
источник

АД

Антон Дьячук... in Saint P Ruby Community
не доказано, были исследования, какие-то корреляции, пока все не точно
источник

АД

Антон Дьячук... in Saint P Ruby Community
у меня была интеграция с пхпшником, он к моему api слал /users/1.php - вот он точно сидх
источник

EM

Eugene Maslenkov in Saint P Ruby Community
XD XD XD
источник

A

Anton in Saint P Ruby Community
Антон Дьячук
пхпшники всегда отвечают 200 🙂
спорное утверждение
источник

CM

Cucumba Morozov in Saint P Ruby Community
Антон Дьячук
у меня была интеграция с пхпшником, он к моему api слал /users/1.php - вот он точно сидх
эт content negotiation называется, по-моему
источник

CM

Cucumba Morozov in Saint P Ruby Community
просит вернуть ответ в формате пхп
источник

АД

Антон Дьячук... in Saint P Ruby Community
Cucumba Morozov
просит вернуть ответ в формате пхп
я так и писал format.php %D
источник

АД

Антон Дьячук... in Saint P Ruby Community
никогда этого не забуду
источник

CM

Cucumba Morozov in Saint P Ruby Community
источник