GraphQL: Алтернатива на REST на HTTP

GraphQL: Алтернатива на REST на HTTP

Съществуват много архитектурни стандарти с отворен код за изграждане и разпространение на приложения. REST (Representational State Transfer), SOAP (Simple Object Access Protocol), RPC (Remote Procedural Call) и GraphQL API са най-популярните.





RESTful API са най-използваният API архитектурен стандарт. Ако сте написали сложни RESTful API с много крайни точки, вероятно сте осъзнали колко сложни могат да бъдат те. Това е особено вярно, ако има само малки разлики между крайните точки.





MAKEUSEOF ВИДЕО НА ДЕНЯ

Може също да срещнете проблеми с извличането на данни, тъй като RESTful API не са достатъчно гъвкави, за да избират конкретни данни. GraphQL решава тези проблеми на RESTful API.





Какво е GraphQL?

GraphQL (Graph Query Language) е език за заявки и среда за изпълнение за изграждане на API. За разлика от REST API с много крайни точки за потребление на данни, GraphQL API имат една входна точка. Можете да извлечете конкретни данни, като ги опишете в заявки.

The GraphQL спецификация дефинира езика на заявките и как работят GraphQL сървърите. Можете да създавате и използвате GraphQL API на езици от страна на сървъра от Python до Javascript и всеки език, който поддържа HTTP.



Meta създаде GraphQL през 2012 г. като алтернатива на REST за изграждане на HTTP. Те пуснаха GraphQL като стандарт с отворен код през 2015 г. Днес фондацията GraphQL наблюдава разработването на спецификацията GraphQL.

GraphQL е сравнително нов, с ниско възприемане и има скрити разходи за използването му. Изграждането на GraphQL API може да бъде ненужно сложно, особено за малки проекти с няколко крайни точки.





Освен това всички GraphQL заявки в крайна сметка връщат код на състояние 200, независимо от състоянието на заявката.

Как работи GraphQL?

  GraphQL's functions and syntax

За разлика от REST, който е ориентиран към ресурсите , GraphQL изисква да мислите за данните като за графика, за да взаимодействате с данните. Можете да укажете структурата на данните, а спецификацията предоставя стабилен интерфейс за заявки за взаимодействие с API през HTTP. Ще можете да използвате различни функции в зависимост от GraphQL пакет или библиотека изберете да използвате.





Схемите на GraphQL включват типове обекти, които дефинират искания обект и неговите налични полета. При заявки и мутации на API, пакетът GraphQL валидира заявките и ги изпълнява въз основа на посочените манипулаторни функции (преобразуватели).

как да се блокирате от уебсайтове

Защо трябва да използвате GraphQL?

REST е лесен за използване стандарт и повечето езици за програмиране имат инструменти за бързо изграждане на RESTful API. Въпреки това има много проблеми с изграждането и използването на RESTful API.

Ето някои от проблемите с REST, които карат разработчиците да предпочитат GraphQL за някои случаи на употреба.

Неефективно извличане на данни

RESTful API предава данни въз основа на спецификацията на крайната точка. Те не са достатъчно гъвкави, за да извличат данни извън това, което е твърдо кодирано във функцията за обработка на крайната точка.

Да предположим, че крайна точка връща списък с данни при повикване и трябва да посочите стойности или критерии за полета. В този случай разработчикът трябва да създаде крайна точка и да дефинира бизнес логиката за връщане на данните. Можете да анализирате ценния ресурс ръчно, което в крайна сметка отнема повече време.

GraphQL решава проблема с неефективното извличане на данни, тъй като можете да правите заявки към API, за да върнете данни въз основа на критерии и спецификации гъвкаво.

API на GraphQL са интерактивни; можете да посочите данните, които трябва да извлечете, в лесен, четим синтаксис.

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

Заявката на GraphQL по-горе задава a потребител схема за записи, където възраст полето е 89. Заявката има вградена заявка за записи, където жив полето оценява вярно . Той връща полетата за име, биография и националност от схемата.

мога ли да пусна youtube на алекса

Бързо развитие

Изграждането и използването на GraphQL API е по-лесно от използването на REST, особено когато размерът на проекта се увеличава. По време на фазата на разработка не е нужно да разработвате толкова много маршрути и манипулаторни функции, колкото при разработването на RESTful API. Използването на GraphQL API не е толкова досадно, колкото RESTful API.

В REST различните крайни точки дават достъп до различни ресурси, за разлика от GraphQL, където има една единствена крайна точка. Това дава гъвкавост и производителност, а заявките могат да извикват различни резолверни функции.

Езикът за дефиниране на схеми GraphQL

Езикът за дефиниране на схеми на GraphQL (SDL) определя схемите за услугите на GraphQL.

Синтаксисът на GraphQL SDL е лесен за четене и разбиране. Ще укажете структурата на вашата схема във файл с .graphql или .graphqls разширение.

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

Кодът на GraphQL по-горе е схемата за GraphQL API, определяща структурата на API за заявки. Схемата дефинира CRUD функционалност за API.

От страна на клиента, въз основа на структурата на схемата и данните или операцията на клиента, клиентът може да изпълни заявка (GET или DELETE в REST) ​​или a мутация (PUT или POST).

Ето пример за запитване към Човек схема.

query Human { 
name
age
}

Горната заявка ще върне човешката схема име и възраст полеви данни.

Мутациите на GraphQL имат доста различен синтаксис за разлика от заявките. Ето примерна операция за мутация на Човек схема.

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

Входовете на мутационния код име и възраст полета на клиента и връща данните от полетата.

Ще ви трябва хранилище на данни за постоянство, когато изграждате своя GraphQL API. Подобно на REST и повечето базирани на HTTP уеб архитектури, GraphQL е без състояние и можете да използвате всяко хранилище на данни или база данни за вашето приложение.

Изграждане на GraphQL API

  Поддържани езици на GraphQL

GraphQL е спецификация и можете да изградите GraphQL на най-популярните сървърни езици. Ще трябва да намерите библиотека с функциите, от които се нуждаете за вашия проект.

Когато избирате библиотека GraphQL, вие искате да използвате библиотека с богати функции, която поддържа всички типове и операции на GraphQL. Повечето библиотеки възприемат подход на първо място със схема или с първо код. В първия дефинирате схема на GraphQL, а библиотеката генерира резолвери и шаблонен код. За последното кодирате твърдо резолверите, без да дефинирате схема.

GraphQL се възприема

От създаването на GraphQL разработчиците и компаниите пуснаха инструменти за опростяване на използването му. Те могат да намалят времето за разработка на по-малки и средни проекти.

Можете да проверите клиентите на GraphQL с отворен код, документацията на GraphQL и спецификацията му, за да научите повече.