Представляем неофициальный SDK Hasura iOS
9 мая 2022 г.Что это?
[Hasura SDK] (https://github.com/relatedcode/HasuraSDK) — это набор инструментов для простой работы с серверами Hasura.
Требования
- iOS 13.0+
- Xcode 12.0+
- Свифт 5.0+
Установка
CocoaPods
Чтобы использовать Hasura SDK с CocoaPods, укажите в вашем Podfile
:
``ш
модуль «HasuraSDK»
Интерфейс GraphQL
Используя Hasura SDK, вы можете легко подключаться к одному или нескольким серверам Hasura. Эти подключения к серверу можно использовать как для запросов, мутаций, так и для подписок.
Подключиться к серверу
```быстрый
импортировать HasuraSDK
let link = "https://имя-вашего-сервера.hasura.app/v1/graphql"
пусть секрет = "EENWfDvVem9y9urmvyoLRK1YDYENISVnTskZOpcfv6"
пусть сервер = HServer (ссылка: ссылка, секрет: секрет)
Вышеупомянутый экземпляр сервера можно использовать для запросов и мутаций мгновенно. Чтобы иметь активную подписку, нам нужно сначала инициировать соединение WebSocket.
Соединение через веб-сокет
Для использования соединения WebSocket вам необходимо вызвать метод connect () перед инициацией подписки.
```быстрый
server.connect () { ошибка в
если (ошибка == ноль) {
// сделай что-нибудь
Соединение WebSocket может быть закрыто с помощью метода disconnect()
.
```быстрый
сервер.отключить()
Мутация
Когда у вас есть подключение к живому серверу, вы можете инициировать мутацию, например:
```быстрый
server.mutation (запрос, переменные) { результат, ошибка в
если (ошибка == ноль) {
// сделай что-нибудь
Тип параметра query
должен быть String
, содержащим допустимую мутацию для вашего сервера.
```быстрый
пусть запрос = """
мутация CreateObject($objectId: String, $text: String, $number: Int) {
createObject(данные: {objectId: $objectId, текст: $text, число: $number}) {
objectId, текст, число
Тип параметра variables
должен быть [String: Any]
, содержащий все необходимые переменные для мутации.
```быстрый
let переменные: [String: Any] = ["objectId": "id111", "text": "abcdabcdabcd", "number": 123]
Запрос
Запуск запроса также довольно прост:
```быстрый
server.query(запрос, переменные) {результат, ошибка в
если (ошибка == ноль) {
// сделай что-нибудь
Где параметр query
выглядит примерно так:
```быстрый
пусть запрос = """
запрос ObjectQuery($number: Int) {
listObjects (фильтр: {число: {gt: $ число}}) {
Предметы {
objectId, текст, число
И параметр variables
что-то вроде:
```быстрый
пусть переменные: [Строка: Любая] = ["число": 123]
Подписка
Настройка подписки очень похожа на предыдущие реализации:
```быстрый
пусть subscribeId = server.subscription (запрос, переменные) { результат, ошибка в
если (ошибка == ноль) {
// сделай что-нибудь
Где параметр query
будет выглядеть так:
```быстрый
пусть запрос = """
подписка ObjectSubscription($number: Int) {
subscribeObjects (фильтр: {число: {gt: $ число}}) {
Предметы {
objectId, текст, число
И параметр variables
что-то вроде:
```быстрый
пусть переменные: [Строка: Любая] = ["число": 123]
Когда подписка вам больше не нужна, вы можете отказаться от нее, используя:
```быстрый
server.subscription(cancel: subscribeId) { ошибка в
если (ошибка == ноль) {
// сделай что-нибудь
Разбор результата
Тип результатов запроса, мутации и подписки — это словарь [String: Any]
. Этот словарь имеет точно такой же контент, который сервер Hasura отправляет обратно в клиентское приложение.
Вы всегда должны знать, каким будет ваш результат (запрос, мутация или подписка), и самостоятельно заботиться о содержании словаря.
Существует несколько различных способов анализа словаря результатов и управления им.
Библиотека запросов
Если вы предпочитаете хранить все ваши мутации, запросы и подписки в общей библиотеке, вы должны добавить один (или несколько) файлов *.graphql
в свой проект Xcode. Содержимое этих файлов должно быть примерно таким:
```график
мутация CreateObject($object: CreateObjectsInput!) {
createObjects (ввод: $ объект) {
objectId, text, number, double, boolean, createdAt, updatedAt
мутация UpdateObject($object: UpdateObjectsInput!) {
updateObjects (вход: $ объект) {
objectId, text, number, double, boolean, createdAt, updatedAt
запрос ObjectQuery($updatedAt: String) {
listObjects (фильтр: {updatedAt: {gt: $updatedAt}}) {
Предметы {
objectId, text, number, double, boolean, createdAt, updatedAt
подписка ObjectSubscription {
onUpdateObjects {
objectId, text, number, double, boolean, createdAt, updatedAt
Эти файлы *.graphql
будут автоматически управляться Hasura SDK, поэтому всякий раз, когда вам нужен запрос, мутация или подписка в вашей кодовой базе, вы можете сделать это следующим образом:
```быстрый
пусть запрос = HSQuery["СоздатьОбъект"]
```быстрый
пусть запрос = HSQuery["ObjectQuery"]
```быстрый
пусть запрос = HSQuery["ObjectSubscription"]
Ограничения
Инструментарий Hasura SDK находится в начальной версии. Он функционален и может справиться с большинством рабочих нагрузок.
© Связанный код 2022 - Все права защищены
Оригинал