Я создаю REST API, который имеет следующие конечные точки:
GET /api/v1/categories - Get all categories
DELETE /api/v1/categories/$id - Delete a specific category
Когда клиент запрашивает все категории, сервер должен вернуть все категории с заголовком HTTP Last-Modified .
Как только категория была удалена, и клиент запрашивает все категории с заголовком HTTP If-Modified-Since старше времени удаления, сервер должен вернуть все категории безудаленный, но с заголовком HTTP, показывающим время последнего изменения, даже если это время было временем удаления.
Я думаю о двух подходах для реализации этого:
- Добавить столбец с флагом, указывающим, был ли он удален (soft-delete);
- Создать таблицу для записи изменений таблиц.
В первом подходе I 'Я добавлю столбец в таблицу категорий, который будет указывать, была ли запись удалена или нет.Таким образом, с помощью этого столбца и столбца, в котором хранится отметка времени последней модификации, я могу проверить, произошли ли какие-либо изменения после данной отметки времени.
Во втором подходе я добавлю таблицу, в которой записаны последниемодификация в любой таблице.Каждая строка этой таблицы является последней модификацией, которая произошла в любой другой таблице системы.Таким образом, когда категория удаляется, запись в таблице журнала, которая содержит информацию о таблице категорий, обновляется, указывая, что последней операцией было удаление с отметкой времени операции.Таким образом, когда мне нужно проверить, произошли ли какие-либо изменения в таблице категорий после определенной временной отметки, сначала я проверяю таблицу журнала и решаю, буду ли я запрашивать таблицу категорий.
Даже если яЕсли в качестве примера использовать категорию, то эта проблема возникает с другими ресурсами моего API, и решение должно использоваться для них таким же образом.
Что вы, ребята, думаете о представленных подходах для решения этой проблемы?