art5455
@art5455
Каюсь, задавал тупые вопросы, но господи... с каки

Как сделать схему данных(модель) из полученного с сервера объекта?

Здравствуйте, с сервера приходит следующий объект:
{
  id: 1,
  test_service_id: 43,
  data: {
    title: "test",
    img: null
  },
  user_info: {
    name: "test"
  }
}

мне нужно нормализовать этот объект таким образом:
{
  id: 1,
  testServiceId: 43,
  title: "test".
  img: null,
  userInfo: {
    name: "test"
  }
}

Как это лучше сделать?

Как вариант, можно создать класс-модель и потом, при отправке на сервер, собирать его заново.
class Model {
  constructor(raw) {
    this.id = id
    this.testServiceId = raw.test_service_id
    ...
  }
}


Как вы организовываете объекты, приходящие с сервера, какие решения\подходы для этого используете?
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
bootd
@bootd
Гугли и ты откроешь врата знаний!
Именно так и делать. 2 модели ModelInput на вход и ModelOutput на выход.
А ещё можно почитать про BFF, но это крайний случай, но он решает такие вопросы.

Но вообще, желательно договориться с бекендом о наименовании. Иначе, это на мой взгляд в большинстве своём "мусорный" код, который ничего не делает, а только раздувает пустым переименованием.

Постараться объяснить им, что вы ребята, работаете с json натацией, это ни к чему не обязывает, но всё же.
Что у меня, например, есть линтеры, которые не позволяют писать свойства с нижним подчёркиванием, тире.
Либо, я должен писать их так: obj['my_prop'] что не очень то.

Резюмируя:
1) Договориться, объяснить почему для вас это плохо и какие проблемы вызывает. И какие проблемы у вас могут от этого быть.
2) Делать свои модели для переименования
3) BFF
4) Забить болт, если это проходной проект.

P.S. Я убеждён, что json должен быть в camelCase натации. В своих проектах, я не раз убеждал бекенд команды делать так. Но это всё были новые проекты. Если проект уже старый, то тут точно ничего не подедать, либо BFF.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы