Наприклад, у мене є організації: Клієнт, Звіт. У клієнта може бути багато звітів, і я думаю, що кінцева точка для одного управління звітом має бути вкладена так:
/clients/{client_id}/reports/{report_id}
Що стосується всіх звітів одного клієнта, то очікується:
/clients/{client_id}/reports
Але як має виглядати кінцева точка для отримання всіх Звітів усіх Клієнтів, щоб API підтримувався послідовно та добре розроблений.
Мої підходи:
- (Я бачив це в деяких програмах google api) використовуйте замість нього "-" і розбирайте його як "все":
/clients/-/reports
Це підтримує формат кінцевої точки однаковий, але виглядає трохи незвично, не може знайти жодного rfc, який пропонує такий спосіб.
- Створіть окрему кінцеву точку лише для всіх звітів:
/reports
Але для отримання звітів клієнта все одно:
/clients/{client_id}/reports
- Кінцеві точки Refactor, щоб зробити "клієнта" не батьківським, а просто параметром фільтра:
/reports?client={client_id}
- звіти одного клієнта
/reports
- звіти всіх клієнтів
У разі додавання нової кінцевої точки для публікації звіту для конкретного клієнта, це може виглядати некрасиво, оскільки це буде POST-запит з параметром у URL.
Чи є ще якісь пропозиції щодо ідей?