- C# 9.0/.NET 5
- ASP.NET Core 5
- HtmlAgilityPack
Необходимо реализовать веб-приложение, предоставляющее следующее API:
Тело запроса:
{
"Url": "<string>"
}
Ответ:
{
"RequestId": "<guid>"
}
Логика:
Необходимо присвоить запросу уникальный идентификатор (используйте Guid), после чего запустить параллельный поток, в котором выполнить следующие операции:
- получить страницу по указанному адресу (Url)
- произвести посчет слов на ней. Необходимо исключить из подсчета html-тэги. В качестве слова выступает любая последовательность символов русского или английского алфавита, отделенная пробелами, занками препинания или не буквенными символами
- в случае ошибки получения страницы необходимо установить соотвествующий статус задаче
Вернуть пользователю идентификатор запроса
Ответ:
{
"Status": <int>
}
Логика:
Вернуть пользователю статус указанного запроса. Возможные значения:
- 0 - обработка
- 1 - завершено успешно
- 2 - завершено с ошибкой
В случае если указанный запрос не существует вернуть код 404
Ответ:
{
"WorldCount": <int>
}
Логика:
Вернуть результаты подсчета слов для указанного запроса
В случае если указанный запрос еще не завершился или завершился с ошибкой вернуть код 404
- использовать .net core 3.1+
- решение представить в виде проекта asp.net core
- в качестве хранилища данных использовать inmemory-коллекции