В моем ответе есть немного нюансов, так что будьте осторожны.
Я считаю, что на практике мы не вносим так много изменений в наши API, и когда мы делаем это, мы часто можем сделать это таким образомгде это обратно совместимо.Это означает, что мы добавляем необязательные поля.
Если вы управляете всеми клиентами, это также довольно просто, потому что вы можете просто обновить все из них, чтобы это не было проблемой.
Это сложнее, когда вы делаетеменяется чаще или делает больше, чем просто добавление некоторых свойств, и к вам подключаются третьи стороны, вы можете легко обновить их.
Существует более 1 способа решить эту проблему, но я рекомендую использовать следующую модель github.
Для более значительных изменений они меняют заголовок Content-Type
.В настоящее время Content-Type
для запросов на github:
Accept: application/vnd.github.v3+json
До того, как они произвели серьезное изменение, оно было:
Accept: application/vnd.github.v2+json
Для экспериментальных API, которые подвержены изменениям, они используют экспериментальныеContent-Type
:
Accept: application/vnd.github.mister-fantastic-preview+json
Обычно эта идея предпочтительна для спокойного дизайна, но это не единственное решение.