Я понимаю, что вы пытаетесь достичь.Но я действительно не думаю, что ты сможешь заставить это работать так, как ты хочешь.Вы можете сравнить это с вызовом нормальной конечной точки API.Скорее всего, у вас будет такой метод:
getContracts() {
fetch('CONTRACTS_ENDPOINT').then(res => doSomethingWithContracts(res))
}
Вы уже знаете, что эти данные возвращают контракты, и вы уже знаете, какие данные ожидать.Поэтому вы можете легко получить доступ к таким полям, как contract.name
или contract.date
.
. И когда вы захотите вызвать другую конечную точку, вы сделаете что-то похожее
getSomethingElse() {
fetch('OTHER_ENPOINT').then(res => ...)
}
Вы будете знать данныеон поставляется с OTHER_ENPOINT
, так что вы можете напрямую получить доступ к его полям.
Поэтому я предлагаю думать о каждом из ваших документов как об отдельной конечной точке API.Конечно, если вы измените свой документ, вам также потребуется изменить реализацию на стороне клиента, поэтому, например, если вы переименуете contract.title
в contract.otherWordForTitle
, то вам, очевидно, придется изменить это и на клиенте.
Из того, что я знаю, что вы хотите, чтобы клиент всегда знал структуру документа, не обновляя его, чтобы знать, что документ изменился, невозможно.Но, конечно, я могу ошибаться, и может быть обходной путь :-)