Сравнивая с каким лучшим решением для предоставления API-данных c данных для одной книги - PullRequest
0 голосов
/ 25 мая 2020

Я разрабатываю проект, состоящий из ReactJS в качестве внешнего интерфейса и Laravel в качестве конечной точки внутреннего интерфейса.

Мой проект в основном зависит от отображения данных c в соответствии с критериями, выбранными пользователем, и эти данные представляют собой одну книгу, разделенную на следующие разделы: -

  • Разделено на страницы (500 страниц).
  • Разделено на части (40 частей).
  • Разделен на главы (25 частей).
  • Строка на каждой странице c количество текстовых строк.

Позже пользователь может просмотреть книгу в соответствии с следующие критерии: -

  • Specifi c страниц, показать страницы № 1, 2 и 3 из этой книги.
  • Specifi c детали, покажите детали № 1,2 из этой книги.
  • согласно выбранным главам.

Сейчас одно решение я могу сделать, хранит эти данные во многих json файлах и что json файлы хранятся с ReactJS файлами, скажем, внутри папки с именем (книга) и внутри этой папки с книгами следующие файлы json : -

1- bookDividedAccordingToPages. json, он будет содержать массив размером (500), который представляет собой общее количество страниц книги, разделенных на массив объектов, вот образец страниц json файл: -

[
  {
    "page": 1,
    "page-content": [
      { "line_number": 1, "line_text": "This is sample line one text" },
      { "line_number": 2, "line_text": "This is sample line two text" },
      { "line_number": 3, "line_text": "This is sample line three text" }
    ]
  },
  {
    "page": 2,
    "page-content": [
      { "line_number": 1, "line_text": "This is sample line one text" },
      { "line_number": 2, "line_text": "This is sample line two text" },
      { "line_number": 3, "line_text": "This is sample line three text" }
    ]
  }
] 

2- bookDividedAccordingToParts. json, он будет содержать книгу, разделенную на 40 книжных частей массивов объектов: -

[
  {
    "part": 1,
    "part-contents": [
      {
        "part_number": 1,
        "part_text": "This is sample line one text",
        "book_page_no": 1
      },
      {
        "part_number": 2,
        "part_text": "This is sample line two text",
        "book_page_no": 1
      },
      {
        "part_number": 3,
        "part_text": "This is sample line three text",
        "book_page_no": 1
      }
    ]
  },
  {
    "page": 2,
    "page-content": [
      {
        "part_number": 1,
        "part_text": "This is sample line one text",
        "book_page_no": 1
      },
      {
        "part_number": 2,
        "part_text": "This is sample line two text",
        "book_page_no": 1
      },
      {
        "part_number": 3,
        "part_text": "This is sample line three text",
        "book_page_no": 2
      }
    ]
  }
]

Второе решение я могу сделать, это вместо включения файлов 3 json, размер которых, как я ожидаю, будет около (1 МБ) с файлом ReactJS и заставить каждого пользователя, заходящего на мой веб-сайт, загрузить файл prject. js и файл 1 МБ json, я сохраняю json файлов в бэкэнде и пусть laravel прочитает этот json файл, например: - Клиент из ReactJS выбрал следующий номер частей [6,7,8,9] для просмотра из этой книги, поэтому ReactJS отправит следующий запрос api: -

POST /api/getBook/ -> BODY: { "criteria": "parts", "selectedParts": [6, 7, 8, 9] }

А затем в laravel сначала он получит массив в файле «bookDividedAccordingToParts. json», а затем выберет индексы [6, 7, 8, 9], затем ответьте на запрос api с необходимыми данными.

Третье решение - сохранить всю книгу в структуре реляционной базы данных и предоставить пользователю необходимые данные. при получении запроса API.

Каков наилучший метод с точки зрения скорости и экономии ненужной нагрузки на сервер ресурсов?

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