Я дозволив здійснити оптову заміну колекції, наприклад PUT ~/people/123/shoes
де основним є колекція.
Це працює для невеликих дочірніх колекцій елементів, де клієнт хоче переглянути елементи та обрізати деякі, а також додати інші, а потім оновити сервер. Вони можуть ПОСТАВИТИ порожню колекцію, щоб видалити всі.
Це означало GET ~/people/123/shoes/9
б, що він все ще залишатиметься в кеш-пам'яті, навіть незважаючи на те, що PUT видалив його, але це лише проблема кешування і буде проблемою, якщо хтось інший видалить взуття.
Мої API даних / систем завжди використовують ETags на відміну від терміну дії, тому сервер потрапляє під кожен запит, і мені потрібні правильні заголовки версії / паралельності для мутації даних. Для API, які доступні лише для читання та вирівнюються за переглядом / звітом, я використовую час закінчення терміну дії, щоб зменшити кількість звернень за початком, наприклад, таблиця лідерів може бути корисною протягом 10 хвилин.
Для набагато більших колекцій, наприклад ~/people
, я, як правило, не потребую багаторазового видалення, варіант використання, як правило, не виникає природним чином, тому одиночний DELETE чудово працює.
Надалі, а також з досвіду створення REST API та враження тих самих проблем та вимог, як аудит, я був би схильний використовувати лише дієслова GET та POST та дизайн навколо подій, наприклад POST зміна адресної події, хоча я підозрюю, що прийду зі своїми наборами проблем :)
Я б також дозволив розробникам інтерфейсних систем створювати власні API, які споживають більш суворі інтерфейси API, оскільки часто бувають практичні, обгрунтовані причини на стороні клієнта, чому їм не подобається строгий дизайн API REST API "Fielding zealot", а також для підвищення продуктивності та причини шарування кешу.