stevenlam505 Ответов: 1

Как настроить webapi, чтобы он мог периодически проверять наличие почтовых сообщений?


Я нахожусь в середине написания API, который регулярно получает информацию из запроса POST каждую минуту. Однако я хочу сделать так, чтобы мой API мог обнаруживать, когда он не получает этот POST-запрос от клиента каждые 30 минут. Чтобы сделать это немного понятнее, я хочу сделать так, что если по какой-то причине клиент перестанет отправлять POST-запросы в течение 30 минут, мой API запустит функцию. Как бы я мог реализовать эту периодическую проверку POST request? Я предполагаю, что мне придется сделать какой-то цикл, где я планирую повторное событие, однако я не уверен, как его настроить, потому что я все еще очень новичок в C#.

Что я уже пробовал:

Это весь код для моего базового API
[ApiController]
    [Route("[controller]")]
    public class GeneratorStatusController : ControllerBase
    {

        static List<string> strings = new List<string>()
        {
            "value0", "value1", "value2"
        };

        static CheckForInput()
        {
            /// Check to see if I've received any POST requests
            /// If I haven't received one for 30 minutes, send out 
            /// an email 
        }

        [HttpGet]
        public List<string> GetValues()
        {
            return strings;
        }

        [HttpGet("{id}")]
        public string Get(int id)
        {
            return strings[id];
        }

        [HttpPost("{time}")]
        public void Post(string time)
        {
            strings.Add(time);
        }

1 Ответов

Рейтинг:
2

Dave Kreskowiak

Вы не делаете этого в веб-API. Веб-API имеют те же ограничения, что и обычный HTTP-трафик. Это многопользовательская система запросов и ответов.

Это потребует настройки некоторого отслеживания состояния для каждого сеанса клиента. Клиент подключается, API присваивает идентификатор этому сеансу клиента и сохраняет его в базе данных. Каждый раз, когда клиент вызывает API, метод API обновляет состояние сеанса и метку времени последнего вызова в базе данных.

Теперь это делает API нет проверьте базу данных, чтобы увидеть, какие сеансы не были обновлены. Это будет предоставлено отдельному процессу (службе Windows или запланированному заданию) для опроса базы данных, чтобы проверить, был ли каждый сеанс обновлен за отведенное время. Затем этот процесс либо вызовет другой метод в API, либо сам справится с ситуацией, когда вы сделаете все, что вам нужно, и удалите базу данных сеанса из базы данных, если этого требуют бизнес-правила.