| Уровень | 🛠 сложная |
| Время | 2–3 часа |
| Понадобится | агент, браузер; для заливки — аккаунт |
| Качает | работать по чужой спеке: читать документацию, а не угадывать поля |
Сделайте страницу, которая показывает свежие материалы SlopHub, забирая их из
нашего API. Как именно показывает — ваше дело: лента, плитка,
табло на второй монитор, «мем дня», случайная ссылка по кнопке.
Условия те же, что и у первой задачки: одна страница, без
сборщиков и без внешних зависимостей — плюс три новых.
429, вернул пустойКлюч не нужен: публичное чтение открыто всем и отовсюду, браузер сходит на
api.slophub.ru прямо со страницы.
Начать проще всего отсюда:
GET https://api.slophub.ru/api/v1/entries?kind=news,link&limit=10
url_path, а не склеена рукамиАгент придумает поля. date, image, link, description выглядят
правдоподобно — и ни одного из них в ответе нет. Это главные грабли задачки:
модель дописывает API по мотивам тысячи похожих, вместо того чтобы прочитать
этот. Лечится одним приёмом: дайте ей спеку и потребуйте называть поля по ней.
Тела записи в списке не окажется. body_md и body_html в списках не
приезжают, пока не попросишь with_body=true, — и агент решит, что API
«сломано».
Обработку ошибок не напишут, пока не попросишь. Счастливый путь готов,
всё остальное — белый экран. Скажите отдельным требованием.
Появится опрос раз в секунду. Такой виджет упирается в лимит за полминуты
и дальше показывает 429. Заодно посмотрите на заголовки X-RateLimit-* —
они и есть ответ на вопрос «а сколько можно».
Захочется поставить библиотеку. Здесь она не нужна: fetch и разметка.
Запрет на зависимости — часть задачки, а не придирка.
Демка не увидит интернет — и это не мешает. Контейнер демки в сеть не
ходит намеренно, но ваш код работает в браузере гостя, и запрос уходит оттуда.
Понять эту разницу — половина ценности задачки.
q — с русской морфологией и защитой от опроса наposter_url, иначе на месте ролика будетnext_cursor из ответа —cursor следующего запроса."build": true — см.