Как правильно построить API для приложения React с массовым редактированием? - PullRequest
0 голосов
/ 24 октября 2018

Основным требованием является массивные редактируемые данные на странице и ожидающие запросы к серверу.Пользователь может вносить изменения в разные объекты, затем эти изменения сохраняются локально и только после нажатия кнопки «Сохранить» - на сервер отправляется запрос на изменение данных.

Как бы вы порекомендовалипостроить API в таком случае?Какой подход будет более предпочтительным для требований, описанных выше.Должно ли это быть REST API , GRAPHQL или что-то более конкретное?

Вот как в настоящее время выглядит структура данных:

{
  '0': {
    Subject: {
      FirstName: 'Vasia Puplin',
      LastName: 'Puplin',
      FullName: 'Vasia Puplin',
      PrefixName: 'Mr.',
      TaxId: null,
      SearchFirstName: 'Vasia Puplin',
      SearchLastName: 'Vasia Puplin',
      Class: {
        Id: 148,
        Name: 'Person'
      },
      Status: {
        Id: 173,
        Name: 'Active'
      },
      Updated: '2014-05-26T10:31:15.353',
      Updatedby: null,
      UpdatebyName: null,
      Created: '2014-05-26T10:31:15.353',
      Createdby: null,
      CreatedbyName: null,
      Ssn: null,
      Contacts: {
        Emails: [
          {
            Email: 'asdg@gmail.com',
            Status: {
              Id: 150,
              Name: 'Active'
            },
            Updated: '2014-12-09T00:50:23.903',
            Updatedby: null,
            UpdatebyName: null,
            Created: '2014-05-26T10:31:15.44',
            Createdby: null,
            CreatedbyName: null,
            ParentId: 1052,
            Id: 326,
            UpdateStatus: null,
            UpdateResult: {
              Result: null,
              Message: null
            },
            PreparedForEdit: true
          }
        ],
        Phones: [
          {
            Number: '(111) 555-5155',
            Type: {
              Id: 154,
              Name: 'Cell'
            },
            Updated: '2014-05-26T10:31:15.41',
            Updatedby: null,
            UpdatebyName: null,
            Created: '2014-05-26T10:31:15.41',
            Createdby: null,
            CreatedbyName: null,
            ParentId: 1052,
            Id: 683,
            UpdateStatus: null,
            UpdateResult: {
              Result: null,
              Message: null
            },
            PreparedForEdit: true
          },
          {
            Number: '(718) 444-4444',
            Type: {
              Id: 155,
              Name: 'Fax'
            },
            Updated: '2014-05-26T10:31:15.427',
            Updatedby: null,
            UpdatebyName: null,
            Created: '2014-05-26T10:31:15.427',
            Createdby: null,
            CreatedbyName: null,
            ParentId: 1052,
            Id: 684,
            UpdateStatus: null,
            UpdateResult: {
              Result: null,
              Message: null
            },
            PreparedForEdit: true
          }
        ]
      },
      SignatoryPrimary: null,
      Address: {
        OwnerId: 1052,
        OwnerType: 1,
        HouseNum: '11-12',
        Street: '555 Street',
        Room: null,
        City: 'Floral Park',
        State: 'NY',
        Zip: '11001',
        Status: {
          Id: 28,
          Name: '8632'
        },
        Updated: '2014-05-26T10:31:15.393',
        Updatedby: null,
        UpdatebyName: null,
        Created: '2014-05-26T10:31:15.393',
        Createdby: null,
        CreatedbyName: null,
        FullAddress: null,
        ShortAddress: null,
        Id: 1256,
        UpdateStatus: null,
        UpdateResult: {
          Result: null,
          Message: null
        },
        PreparedForEdit: true
      },
      Id: 1052,
      UpdateStatus: null,
      UpdateResult: {
        Result: null,
        Message: null
      },
      PreparedForEdit: true
    },
    Capacity: null,
    Updated: '2014-05-26T10:31:15.38',
    Updatedby: null,
    UpdatebyName: null,
    Created: '2014-05-26T10:31:15.38',
    Createdby: null,
    CreatedbyName: null,
    ParentId: 342,
    Id: 405,
    UpdateStatus: null,
    UpdateResult: {
      Result: null,
      Message: null
    },
    PreparedForEdit: true
  }
} 

Как можномы изменили структуру данных, чтобы построить правильную архитектуру?

Вот несколько примеров UX.

Страница контактов
Общая страница

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...