Ситуация следующая: у меня есть веб-сервер Flask, и мне нужно разработать для него новую конечную точку API (POST / GET), которая обновляла бы / считывала состояние сервера.
Мой POST API требует ввода, подобного этому:
{
"name": <name_of_the_server>,
"serverUrl" <url_of_the_server>,
"available": true/false
}
Я хочу сохранить эту информацию в Redis на неделю. Я сохраняю все JSON из запроса API как значение словаря в Redis. Я сваливаю и загружаю это с рассолом. Ключ - это параметр "name".
У меня также есть конечная точка GET API, в которой я могу указать имя сервера и получить информацию о его состоянии. Следовательно, Python проверяет в Redis ключ, содержащий имя сервера (предоставленное пользователем через API), и возвращает значение (словарь со всей ранее сохраненной информацией).
Это все хорошо, и работает как задумано. Однако через GET API я также смогу искать состояние сервера по URL-адресу сервера (а также по имени сервера).
Пока что мое решение выглядит следующим образом:
// Redis is a class, I previously instantiated
redis.set(server_name, server_data, ex=time_to_live)
redis.set(server_url, server_data, ex=time_to_live)
Я установил два ключа, содержащие точно такую же информацию. Через конечную точку GET это дает мне возможность проверить состояние сервера, используя либо имя сервера, либо URL-адрес сервера, поскольку они возвращают одно и то же значение. Кроме того, они имеют одну и ту же дату истечения срока действия и всегда обновляются вместе.
Это работает, однако я считаю, что это скорее "читерское" решение, поэтому я хотел бы попросить совета, если мне следует сохранить это так, или если есть лучший способ достичь той же функциональности. Заранее спасибо!