User avatar

Меня много лет анноит то, что у HTTP 400, на мой взгляд, неоднозначная семантика. RFC 7231 говорит "The 400 (Bad Request) status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)." Мне кажется, что словосочетание "malformed request syntax" должно относиться к синтаксису HTTP-запроса как такого. Если зайти на 80 порт телнетом и написать туда мусор, то сервера отдают HTTP 400, это норм.

Comment

Но есть же вторая ситуация — когда у тебя урл имеет некий внутренний синтаксис (уровня приложения/API) и этот синтаксис неверен. Если отдавать HTTP 400, то вот например nginx не передает запрос другому прокси в цепочке, а делает это только для 5xx или 404.

 ‎· псы в рапиде
Comment

Для POST-запросов есть HTTP 422 (который конечно был hijacked у WebDAV), а вот для GET нормально решения нет вообще. Ну то есть да, возвращать 404 и что-то человеко-читабельное в теле.

 ‎· псы в рапиде
Comment

так 422 неофициальный, почему бы его и для GET не отдавать?

 ‎· адский хардлайн в засаде
Comment

@larhat: бля, может и правда. У нас же сломались однажды оба краулера фрифида, мой и эпиковский потому что они отдавали 422 на GET-запросах, мне кажется у меня от этого психологическая травма.

 ‎· псы в рапиде
Comment

@larhat: короче, задротский вопрос: https://www.w3.org/Protocols/rfc2616/rfc2616-sec7.html в соответствии с этим документом, передается ли в GET-запросах Entity? :) Есть ли там что-то, что может быть Unprocessable?

 ‎· псы в рапиде
Comment

я использую 422 для REST-запросов, если в теле JSON-запроса были ошибки с точки зрения приложения. мне не кажется принципиальной разница передаётся ли entity в body или в query. документ не читал

 ‎· 250 матерящихся птиц 1
Comment

@misha: ну так можно и до копипасты со stackoverflow дойти!

 ‎· псы в рапиде 1
Comment

@squadette ну про verb ничо нет, но и в списке хедеров path нету! То есть как бы unprocessable может ответить, если поц в хедерах накосячил, что ли.

 ‎· адский хардлайн в засаде
Comment

@larhat: именно, бл!

 ‎· псы в рапиде
Comment

Задротствовать если, то кажется надо 404 отдавать всё-таки — не нашлось по запросу ж, всё-таки.

 ‎· адский хардлайн в засаде 1
Comment

418 хватит всем

 ‎· просто варежка
Comment

@zverok: ну да, единожды пошученную шутку нужно дошучивать, это ж священная обязанность каждого технаря из глубинки. Стругацкие, Щербаков, HTTP 418 — символы принадлежности к не таким как все.

 ‎· псы в рапиде 1
Comment

@squadette: кажется, вот ключевая цитата для ответа на вопрос: "The Content-Type entity-header field indicates the media type of the entity-body sent to the recipient or, in the case of the HEAD method, the media type that would have been sent had the request been a GET. " - https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17

 ‎· лопата учёных из Омска
Comment

@squadette: ты меня огорчаешь. мне правда следовало написать «да, вопрос непростой, и это одна из главных причин почему API BrandSpotter использовал именно абсурдный 418 (а не 400, скажем), о чём мы с тобой много говорили в те времена, если помнишь; мне, впрочем, и до сих пор кажется что ... ... ...»? ну ок, буду иметь в виду.

 ‎· просто варежка
Comment

@zverok: я кстати вообще не помню. Ну и мне кажется что со времен BS утекло некоторое кол-во воды.

 ‎· псы в рапиде
Comment

ну, утекло. но мой коммент был отсылкой к тем диалогам (которые ты забыл), а не дежурной шуткой. извини, я постараюсь быть более внятным в будующем.

 ‎· просто варежка

1 2 3 4 5 6 7 8 9 10