Email or username:

Password:

Forgot your password?
Top-level
Umnik

@skobkin хттп - это протокол. Вот тебе сотые, вот пятисотые. Воспринимаю только так и завожу баги в своих проектах, если иначе. @rayslava

9 comments
Roman

@umnik @skobkin @rayslava а что, не нравится когда вернулось 200 и в ответе json с описанием ошибки? :)

Umnik

@3draven нет, не нравится. Но прям такого у меня никогда и не было. А вот отдавать 500 вместо 400 - это прям было @skobkin @rayslava

Alexey Skobkin

@umnik @3draven @rayslava
Это не "отдавать 500 вместо 400", а "ебланы не смогли в валидацию и сломались от неожиданного значения" 😁

У меня такое тоже было, лол.

Umnik

@skobkin это ты причину описываешь. Мы все её понимаем. Но для заведения дефекта были условия, что на плохой запрос должен быть ответ "плохой запрос". То есть с точки зрения "результат проверки" это именно 500 вместо 400. А под капотом да, типичная проблема, когда просто передали без проверки, а БД ругнулась на вставке, например. Просто для заведения баги это не важно [в той структуре организации было] @3draven @rayslava

Alexey Skobkin

@umnik @rayslava
Воспринимаешь только как?
Я не шучу, я размышляю в двух парадигмах сразу. Если оторваться от привычной, то вопрос вполне имеет смысл.

Umnik

@skobkin только как протокол. То есть вот методы, вот статус коды. Не требую прям всё разнообразие поддержать, но нулевые отдавать только по делу. @rayslava

Alexey Skobkin

@umnik @rayslava
Ну так методы и коды - они про доступ к ресурсам.
А какой уровень абстракции является ресурсом?

Что если для тебя ресурсом является сам эндпоинт, а не то, что он может тебе отдать после какой-то работы?

Плюс есть ведь дискуссии в стиле "надо ли возвращать 404 если ты обратился по id, которого нет", ведь на уровне протокола HTTP (без учета тела) это будет неотличимо от того, что ты просто пришел мимо эндпоинта ☝️
Но это противоречит идее "маппим все как можем на коды HTTP".

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

P.S. Мы тут не обязательно говорим про Rest. В его рамках-то как раз бизнес-сущности подразумеваются HTTP-ресурсами.

@umnik @rayslava
Ну так методы и коды - они про доступ к ресурсам.
А какой уровень абстракции является ресурсом?

Что если для тебя ресурсом является сам эндпоинт, а не то, что он может тебе отдать после какой-то работы?

Плюс есть ведь дискуссии в стиле "надо ли возвращать 404 если ты обратился по id, которого нет", ведь на уровне протокола HTTP (без учета тела) это будет неотличимо от того, что ты просто пришел мимо эндпоинта ☝️
Но это противоречит идее "маппим все как можем на коды HTTP".

Umnik

@skobkin
Каждый участник в цепочке будет эндпоинтом для меня. Каждый промежуточный узел путешествия запроса по http должен подчиняться одним и тем же правилам.

404 - это статус код. Уточнения - в теле. Не надо его не учитывать. И я буду настаивать на таком поведении до тех пор, пока не получу объяснение, почему так нельзя. Кроме "ну а что такого?"
@rayslava

Alexey Skobkin

@umnik @rayslava
А никто и не говорит, что так нельзя.
Другое дело что так "можно", а не "нужно".

То есть "должен" мне тут не очень понятно.

В целом когда Слава меня спрашивал, я сказал, что это скорее считается правилом хорошего тона. В среднем по больнице.

Однако я вполне могу понять другую позицию. Она не лишена смысла.

Go Up