2017-01-20 11 views
3

Допустим, моя версия моего SemVer API является 2.0.0- более конкретный HTTP-код «Semver break change»?

Предположим, у меня есть конечная точка /foo, что прямо сейчас, что ошибочно всегда возвращает {200, "some message"} или {500, "some message"}

исправить ошибку, так что я теперь обнаружить плохие запросы , и теперь я возвращаю {200, "some message"} или {400, "some message"} или {500, "some message"}

Рассматривается ли это как нарушение API в SemVer? Пользователь может не ожидать 400, поэтому я могу видеть случай для 3.0.0, однако я также могу видеть, что это должно было быть 400 на BAD REQUEST, потому что в некотором смысле «HTTP» - это мой API, следовательно, исправление патча до 2.0.1, поэтому я порван.

+0

В этом случае вы бы возвращали полезные сообщения вместе с вашими ответами «500» или просто общим сообщением? –

+0

no my 500 было общим сообщением, которое было неправильным в случае плохих запросов – Tommy

ответ

0

Я думаю, что прежде чем отвечать на это, вы должны философски определить, где лежит ответственность. А именно, если клиентский код не способен обрабатывать новый (правильный) код состояния, это то, что нарушает результат вашего изменения или результат плохо написанного кода клиента. Если вы ранее отправляли некоторую полезную информацию вместе с вашими ответами 500, тогда было бы разумно ожидать, что клиентский код, возможно, положился на нее.

Для меня это звучит как само определение minor изменения:

минорной версия [это] при добавлении функциональности в обратной совместимости способом [. , .]

Фактические ошибки внутреннего сервера по-прежнему отправляются должным образом, и успешные результаты по-прежнему отправляются должным образом; то, что вы сделали, просто добавило способность клиентов определять, откуда возникают ошибки.

редактировать: Таким образом, вместо 2.0.1 или 3.0.0, я считаю, что это было бы 2.1.0.