Доброй ночи.
Сейчас работаю над одинм проектом с достаточно опытным программистом и судя по всему не совсем понимаю коцепцию REST API и как с ним нужно работать.
Я пишу фронтэнд приложения на react и взаимодействую c данными через API.
Например ситуация.
У меня есть сложный обьект который мне нужно обновить или добавить. Под сложным подразумеваю примерно следующее: (это обьект написаный только что на коленке чисто для демо, в реальном у меня под 40 полей и 5 уровней вложености)
var Obj = {
client: {
id: "1442",
address: {
legal_address:{ id: "532", zip: "48202", country: "USA", street: "Apple str", house: "10", office: "25"},
post_address: { id: "533", zip: "48202", country: "USA", street: "Apple str", house: "12", office: "25"}
},
stocks: [
{
id: "25",
title: "Sunday Stock",
address: { id: "532", zip: "48202", country: "USA", street: "Apple str", house: "10", office: "25"}
},
{
id: "27",
title: "Monday Stock",
address: { id: "532", zip: "48202", country: "USA", street: "Apple str", house: "10", office: "25"}
}
]
}
}
При этом в базе это все храниться примерно так:
id post_address legal_address stocks
1442 532 533 25;27
Самое главное, на сервере стоит валидация обьекта и я должен передавать туда не id, как оно хранится в базе, а полный обьект типа того который я показал выше на примере.
И самое сложное начинается когда нужно добавить новый обьект, например в массив складов.
Сейчас у меня это работает вот так:
api.newObj('stock', stockData).then( ( newStockId ) => {
// Получаю полный обьект клиента на текущее состояние
api.getObj('client', id).then( ( clientObj ) => {
// Получаю полный обьект склада что бы добавить его к массиву существующих складов
api.getObj('stock', newStockId ).then( (newStockObj) => {
// Добавляю к массиву складов
var StockArray = newStockObj.stocks;
StockArray.push( newStockObj );
var UpdateObj = Object.assign({}, clientObj, {stocks: StockArray});
// Обновляю клиента
api.updateObj('client', UpdateObj);
});
});
});
Это все работает, но выглядит как-то костыльно и не совсем логично.
Но иначе, я не смогу отдать серверу валидные данные. Особенно это сложно, когда я добавляю обьект у которого внутри вложено еще 2-3 обьекта со своими id, которые так же добавляются когда приходят в запросе на добавление нового обьекта. (Например со складом, это обьект адресса который пишется в отдельную табличку).
Как делать правильно?