GET Together, соцсеть, где пост публикуют GET-запросом, а не POST
GET Together, Show HN проект, минималистичная социальная сеть, построенная вокруг игры слов: фраза «get together» («собраться, встретиться») здесь буквально означает «написать пост не тем HTTP-методом». По конвенции REST запись данных делают через POST, но на этом сайте любое действие, которое меняет состояние, создание поста, лайк, ответ, удаление, выполняется GET-запросом. Посты публичны, лента показывает сначала самые новые, и, по словам самого сайта, «это, в общем-то, всё», больше функций нет.
API сайта состоит из нескольких эндпоинтов, и все они GET: /post создаёт пост (параметры name, имя автора длиной 2, 20 символов из букв, цифр и подчёркивания, не проверяется на уникальность, и text); /feed отдаёт посты в формате JSON, а с параметром parent=ID поста, отдаёт ответы на конкретный пост вместе с ним самим; /heart?id=…&on=1 ставит лайк («сердечко»), on=0 его снимает; /delete?id=… удаляет свой пост, но при этом сохраняет чужие ответы на него. Ответить на пост можно, добавив к /post параметр parent=ID_ПОСТА. Сайт приводит готовые примеры кода на curl, Python, JavaScript, Go и Rust, все они сводятся к одному GET-запросу с параметрами в строке запроса.
Для публикации кука не обязательна, но сервер возвращает куку gt_session, которую нужно сохранить, чтобы позже удалить свой пост. Для безопасного повтора запроса (например, при обрыве связи) рекомендуется самому сгенерировать UUID, передать его как id и использовать вместе с той же кукой; если id не передан, каждый повторный запрос создаёт отдельный новый пост.
Новые посты и имена автоматически проверяются на английскую нецензурную лексику и крипто-контент: биткоин, мемкоины и продвижение токенов на сайте запрещены. Жалобы пользователей запускают автоматическую проверку, но удаляются только явные нарушения, сама по себе жалоба пост не убирает. При превышении лимита запросов сервер отвечает кодом 429 и рекомендует подождать десять секунд перед повтором; некорректные имя, текст или UUID дают 400, проблема с кукой-владельцем или происхождением запроса, 403.
Отдельно сайт предупреждает: поскольку в GET-запросе весь текст передаётся прямо в URL, содержимое поста становится частью адреса страницы, и напрямую просит не указывать в постах приватную информацию.
Ключевые факты
- Все действия на сайте, публикация поста, лайк, ответ, удаление, выполняются GET-запросами, хотя по конвенции REST запись данных делают через POST.
- Полный набор эндпоинтов: /post (создание), /feed (лента и ответы через parent=ID), /heart (лайк/снятие лайка), /delete (удаление своего поста, чужие ответы сохраняются).
- Имя автора, 2, 20 символов из букв, цифр и подчёркивания, не проверяется на уникальность.
- Для безопасного повтора запроса нужно передать собственный UUID как id и сохранить куку gt_session; без id каждый повтор создаёт новый пост.
- Автомодерация проверяет посты и имена на нецензурную лексику и крипто-контент (биткоин, мемкоины, продвижение токенов под запретом); при превышении лимита запросов сайт отвечает кодом 429 и советует ждать 10 секунд.
Почему это важно
GET Together, это инженерная шутка, доведённая до полностью рабочего сервиса: сайт нарочно ломает базовое разделение HTTP-методов (GET, для чтения, POST, для записи), чтобы буквально воплотить каламбур в названии. Ценность здесь не в социальной сети как продукте, а в демонстрации того, насколько последовательно можно провести идею через реальный API, с модерацией, лимитами запросов и механизмом повтора запросов.
Кому это важно
Веб- и бэкенд-разработчикам, которым интересны шутки про протокол HTTP и минималистичный дизайн API; тем, кто хочет посмотреть на нестандартное, но рабочее решение задачи идемпотентных повторов запроса (через собственный UUID и куку) без создания отдельной базы сессий.
Как это применить
Сайт даёт готовые примеры кода на curl, Python, JavaScript, Go и Rust, публикация поста в каждом случае сводится к одному HTTP GET-запросу с параметрами name и text в строке запроса. Полный список действий: /post, создать пост или (с parent=ID) ответить на существующий; /feed, получить ленту постов или ответов; /heart?id=…&on=1|0, поставить или снять лайк; /delete?id=…, удалить свой пост. Для повторных попыток при сбое сети стоит генерировать свой UUID и передавать его как id вместе с сохранённой кукой gt_session.
Можно ли доверять
Материал, это собственная страница документации сайта (Show HN на Hacker News), она подробно и технически точно описывает, что именно делает сервис. При этом текст не называет, кто и когда сделал сайт, на какой технологии и где он хранит данные, и не приводит никакой статистики, число пользователей, постов или обращений к сервису из источника оценить нельзя.
Риски и подводные камни
Поскольку в GET-запросе весь текст поста передаётся прямо в URL, он оседает в истории браузера, логах сервера, кэшах прокси и заголовках Referer, именно об этом риске сайт сам предупреждает, прося не указывать в постах приватную информацию. Автомодерация проверяет ругательства и крипто-контент, но убирает только явные нарушения по итогам автоматической проверки, одиночная жалоба пост не удаляет, и до момента проверки нежелательный контент может оставаться видимым.