kolesa-upgrade-homework-3
Дедлайн: 25.09 воскресенье 23:59
Домашнее задание состоит из 3 частей:
1. Практическая работа.
Современные проекты часто состоят из множества веб-сервисов, взаимодействующих друг с другом по HTTP. Мы потренируемся в создании сервиса, который должен обращаться к стороннему API thecatapi.com, получать от него ссылки на фотографии котов, и генерировать на их основе веб-страницу.
Пример итоговой веб-страницы:
<html>
<body>
<img src="ссылка-на-случайное-фото-кота"/>
</body>
</html>
(оформление страницы остаётся на ваше усмотрение)
Документацию сервиса можно изучить здесь: https://docs.thecatapi.com/ Подсказка: нас интересует метод API https://api.thecatapi.com/v1/images/search
Для успешного выполнения задания вам понадобится:
- понимание протокола HTTP
- знакомство с форматом JSON
- базовые знания PHP и HTML
- для выполнения HTTP-запросов на PHP вам могут пригодиться функции
file_get_contents
,curl_exec
, или библиотека Guzzle - мы рекомендуем использовать библиотеку Guzzle; чтобы подключить её в проект, вам понадобится освоить работу с пакетным менеджером composer
- для выполнения HTTP-запросов на PHP вам могут пригодиться функции
Мы ожидаем, что сервис будет написан на PHP. Однако если вы уверенно чувствуете себя с языком Go, то можете использовать его.
Дополнительные (опциональные) требования:
- Подумайте о том, какие ошибки могут произойти при взаимодействии сервисов и как их можно обработать. Что, если thecatapi недоступен? Что будет, если указать некорректный URL? Как лучше сообщить о проблеме пользователю?
- Попробуйте усложнить сервис: выводить котов только из заданной категории https://docs.thecatapi.com/api-reference/categories/categories-list (id категории можно получать из запроса пользователя)
ping
.
2. Изучение утилиты Объясните своими словами, для чего нужна эта утилита. Опишите подробно, что выводит команда ping google.com
.
В частности, напишите, что означают строчки "64 bytes from 142.250.186.206", "icmp_seq=0", "ttl=113", "time=123 ms". Расскажите, что выводит программа при завершении работы (после нажатия ctrl+c).
curl
.
3. Изучение утилиты Объясните своими словами, для чего нужна эта утилита. Опишите подробно, что выводит команда curl -I https://kolesa.kz/
В частности, напишите, что означают строки HTTP/2 200
, server: nginx
и другие. Что означает флаг -I
?
Если вы работаете на windows, то сначала нужно будет установить программу curl; инструкции есть в интернете.
Задания 2 и 3 можно включить в pull request в виде текстового документа в формате txt или md.
Для выполнения заданий вам придётся самостоятельно найти в интернете нужную информацию, которой не было в лекции. Это нормально: программистам в своей работе постоянно требуется изучать что-то новое.