Read-only API с JSON данными
Когда: 29 июня 2023
Навеяно наблюдениями за парой проектов. Парой эдаких стартапов, которые хотят быть классными, современными, привлекательными для соискателей. С ИНТЕРЕСНЫМИ ЗАДАЧАМИ. Короче, вот это все, что обычно пытаются впихнуть HRы в свои презентации, когда хантят.
Кубер ради 10 HTML страниц уже не шутка, а вполне себе реальность. Надо же оправдывать шильдик DevOps в конце-то концов, верно? Но речь не об этом.
Вместо того, чтобы мокать read-only API в каком-нибудь микрофреймворке, я предпочитаю взять обычный nginx.
Способ простой как валенок. Не требует программирования и стоит три копейки. Скажем, справочные данные отдавать.
Допустим, что мы хотим иметь API раут вида: /api/v1/directories/cities, который
отдает данные о городах. Для простоты, мы можем создать структуру каталогов в
нашем хосте. Прям берем и делаем:
# У вас, разумеется, структура будет другая, но смысл не изменится
mkdir -p /var/www/megaservice.com/api/v1/directories/cities
Далее, мы добавляем немного магии заголовков в конфигурацию хоста в nginx.
location /api {
add_header Content-Type application/json;
}
Перезагружаем nginx и проверяем:
# Запрос
curl -I http://megaservice.com/api/v1/directories/cities
# Ответ
HTTP/2 200
server: nginx/1.18.0 (Ubuntu)
date: Tue, 29 Jun 2023 12:36:07 GMT
content-type: application/octet-stream
content-length: 3375
last-modified: Tue, 29 Jun 2023 12:26:50 GMT
etag: "64a4100a-d2f"
content-type: application/json
accept-ranges: bytes
“И это все?” — спрашивает удивленный читатель. Да, епта. Это все, что нам нужно. Никаких ноджиэсов, никаких дополнительных сервисов и прочей хуеты.
Директории создает руками, туда складываем нужные там файлы с данными в формате json. Накидываем Content-Type в ответ и вуаля — у нас работающий статический API с данными.