REST API - ремонтопригодность, гибкость, расширяемость и ограничения
В настоящее время я разрабатываю REST API для протокола анализа трассировки. Например, я могу запросить использование процессора, активность ввода-вывода дисков, использование памяти в качестве модели XY, которая будет отображаться на линейной диаграмме. Я также могу попросить модель временной шкалы, такую как стек вызовов, флеймограф, выполнение потоков.
Это то, что я проектирую до сих пор, следуя Руководству по разработке REST API:
GET /projects/{projectID}/traces/{traceID}/xy/{outputID}/entries
GET /projects/{projectID}/traces/{traceID}/xy/{outputID}/chart
GET /projects/{projectID}/traces/{traceID}/timelines/{outputID}/entries
GET /projects/{projectID}/traces/{traceID}/timelines/{outputID}/chart
GET /projects/{projectID}/traces/{traceID}/timelines/{outputID}/arrow-series
Где outputID может быть "disk-io", "cpu-Использование" или "Использование памяти" для xy URI. Это может быть "callstack", "Flamegraph" для URI временной шкалы. Но, например, "disk-io" невозможен для URI временной шкалы, а "callstack" невозможен для URI XY.
Коллега придумал другое возможное решение:
GET /projects/{projectID}/traces/{traceID}/{outputID}/xy/entries
GET /projects/{projectID}/traces/{traceID}/{outputID}/xy/chart
GET /projects/{projectID}/traces/{traceID}/{outputID}/timeline/entries
GET /projects/{projectID}/traces/{traceID}/{outputID}/timeline/chart
GET /projects/{projectID}/traces/{traceID}/{outputID}/timeline/arrow-series
Как видите, в зависимости от модели некоторые ресурсы могут быть недоступны, и это может измениться. Оба решения кажутся хорошими. Я прошу экспертов с опытом разработки REST API, чтобы объяснить плюсы / минусы и ограничения для каждого решения?
С точки зрения ремонтопригодности, гибкости, расширяемости?