Я считаю, что большинство из вас знакомы со стажем старым добрым отдыхом API. Я использую это в большинстве моих приложений. Концепция отдыха API довольно хорошая, но она имеет свои проблемы.
Самое расстраивающееся часть о написании API отдыха для меня общалась с передними разработчиками. Я всегда борелся с документацией для API, которые я построил. Есть много вариантов, включая Swagger, Raml, и многое другое. Все эти утилиты довольно хорошие, но каждый из них требует большого внимания и много написания. Даже если разработчик создает хорошую документацию, всегда есть человеческая ошибка, которая приводит к несоответствиям между документацией и фактической реализацией.
Год назад я столкнулся с Graphql – я нашел это очень интересно и подумал, что мне пришлось больше исследовать. Позже я начал проект, в котором я решил использовать GraphQL. Когда был реализован GPRAHQL API, я начал работать над настроек интерфейса. Затем я обнаружил что-то, что взорвал мой разум. Graphql имеет библиотеку под названием ** Graphiql Это открывает конечную точку для изучения API GraphQL (. С GraphQL разработчик может получить доступ к схеме с сервера, что на самом деле документация для последней версии API.
После выполнения некоторых исследований для различных вещей, которые я могу использовать открытую схему, я обнаружил плагин для веб-таблицы и Intellij. Плагин проверяет синтаксис GraphQL против открытой схемы с сервера. Это позволило мне сэкономить время, когда в прошлом было потрачено впустую на документировании API отдыха, но мне пришлось идти дальше.
Мне удалось адаптировать плагин Я обнаружил в моей внешней части. Этот плагин работает с Шаблонные литералы которые являются частью ES6. Сначала мне пришлось подключить это с моим сервером, чтобы работать. Все, что мне нужно было сделать, это модифицировать файл конфигурации плагина (Graphql.config.json), изменяя URL и заменив его моим URL-адресом сервера. Следующая часть была немного странной. Этот плагин ищет шаблон литерал имени graphql Отказ Итак, я создал функцию имени graphql которые отправили запрос на сервер.
export function graphql([query]) {
return (variables) => {
let body = {
query: query,
variables: variables
};
return fetch('/graphql', {
method: 'POST',
body: JSON.stringify(body),
headers: {
'Content-Type': 'application/json',
'authorization': localStorageService.getItem('AUTH_TOKEN')
}
}).then(response => response.json())
}
}
Эта функция принимает запрос в качестве параметра, который является синтаксисом GraphQL и возвращает функцию, которая может принимать переменные графики и сделать запросы на сервер.
Заключительная часть представляет эту функцию, в сочетании с плагином GraphQL в действие. Каждый запрос, который сделан на сервере, реализован как следующий пример.
const getById = (customerId) => graphql`
query getCustomer($id: String!) {
customer(id: $id) {
id
user {
id
email
name
surname
referral
}
}
}`({id: customerId});
Увлекательная вещь здесь, пока я пишу этот запрос GraphQL, у меня есть проверка и автозаполнение для синтаксиса GraphQL.
Кроме того, когда API обновляется, я получаю ошибки в моей IDE, где у меня неверные запросы.
Для этой настройки я использую Server GraphQL, написанный в Nodejs, Webstorm и ES6 и синтаксис Esnext для JavaScript. Это ограниченная настройка, но стоит попробовать. После некоторых исследований я нашел плагины для визуального студийного кода и атом.