#API #интеграция
GraphQL. Не язык ты мне
Что меня раздражает в итшечке - бесконечная любовь к словотворчеству. Разработал новую технологию или концепцию? Изобретай термин, который укажет, что это нечто совершенно новое и не подлежит сравнению с существующими.
Причины понятные:
◽️Если автор человек - тщеславие и личный бренд
◽️Опенсорсное решение - продвижение в массы в целях компании
◽️Проприетарное решение - нужно больше золота
Обыкновенные маркетинг, если кратко.
Та же история “языком запросов к API”. Что говорят авторы:
“GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data”.
С их слов GraphQL это:
◽️язык запросов к API, что бы это не значило
◽️некий рантайм, в котором эти запросы обрабатываются
Начнем с языка, что видим:
1️⃣ Все запросы имеют определенную структуру, близкую к JSON
2️⃣ Ответы представлены в виде JSON, который имеет структуру из запроса с заполненными значениями
3️⃣ Не привязан к конкретному транспорту
4️⃣ Доступные действия и данные описывают с помощью своего Schema Definition Language - SDL
Ничего не напоминает?
Если брать п.1-3, то практически полной аналогией можно назвать JSON-RPC.
Если брать п.1-4, то все это SOAP.
Фактически, преред нами сетевой протокол уровня 7+ по модели OSI.
Ок, что там с рантаймом?
Для обработки запросов нужен некоторый компонент, который будет их парсить, валидировать, собирать/обновлять инфу из источников, публиковать SDL. Больше всех на слуху Apollo Server, но есть куча других опенсорсных и проприетарных решений.
Что, опять дежавю? Все так, тезисы полностью распространяются на тот же SOAP. Или gRCP, если сделать скидку на его бинарность.
В итоге получаем, что GraphQL это:
1️⃣ Протокол передачи данных
2️⃣ Технология с различными реализациями
3️⃣ Отчасти архитектурный подход к взаимодействию с фронтами
Вот и все, никакой мистики.
Здесь можно задать резонный вопрос: “Что ты придираешься, нормально звучит же: язык запросов”
◽️Во-первых, реально встречаю недопонимание у людей в этом вопросе.
◽️Во-вторых, если термин не несет новых смыслов, то зачем вообще его вводить?
А так, честный HATEOAS тоже можно языком запросов назвать, это даже корректнее будет.
Кто хочет копнуть глубже, посмотрите наш
стрим с Денисом Лукьяновым, там еще куча материалов в описании.