При построении API REST должны ли поля, добавленные в ответ в версии 2, возвращаться с ответом от вызова конечной точки версии 1?Должны ли появляться дополнительные поля в более низких версиях API?
В качестве примера, учитывая конечную точку api/v1/users/1
, ответ может быть:
{
"first_name":"david"
}
Тогда в v2, учитывая конечную точку api/v2/users/1
, ответ может быть обновлен, чтобы быть:
{
"first_name":"david",
"last_name":"smith"
}
Would это будет плохой практикой иметь тот же ответ, который был получен от вызова конечной точки v2, возвращаемого при вызове конечной точки v1? Моя первоначальная мысль - да, но опять же я не вижу проблемы, поскольку это изменение не будет нарушаться.
В качестве побочного примечания возник вопрос, пытаясь выяснить, как построить версию api с использованием Laravel и Eloquent. Я не могу легко понять, как это сделать с Eloquent, и вам нужно будет сопоставить модель с версией или написать все мои репозитории с QueryBuilder для управления полями. Отмечено как Laravel и Eloquent, так как это те специфические рамки, которые я использую, и хочу посмотреть, есть ли у кого-то решение с их помощью, но вопрос в том, что касается дизайна api вообще.