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, чтобы объяснить плюсы / минусы и ограничения для каждого решения?

С точки зрения ремонтопригодности, гибкости, расширяемости?

0 ответов

Другие вопросы по тегам