Имеется приложение, в котором участвует три стороны:
клиент -> сервер1 -> сервер2
Клиент через прокси сервер1 получает ресурсы сервера2
На сервере2 имеется ресурс по определенному адресу:
GET /resource/123
{
"createdAt": "1937-01-01T12:00:27.87+00:20"
}
И допустим есть требование - если ресурс является expired (дата создания ресурса меньше, чем текущая дата), то его нужно пересоздать. Какая сторона должна выполнить это требование?
Если создавать новый ресурс на сервере2 при получении GET-запрос, то выглядит неочень.
На сервере1 этой логике не место, потому что его ответственностью является только проксирование запросов и небольшой маппинг данных между клиентом и сервером2.
Остается разместить эту логику на клиенте. Но во-первых клиентов может быть очень много, и все они ринутся пересоздавать ресурс. Во-вторых, не всегда клиент сможет после GET-запроса (определить 'expired') послать второй запрос на пересоздание, то есть нет гарантии атомарности операции в два этапа.
Где бы Вы разместили логику пересоздания ресурса и как?