Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере.

ГрапхКЛ је спецификација заснована на ХТТП-у која решава већину проблема на које ћете наићи док правите РЕСТфул АПИ-ји. Погодан је за прављење сложених АПИ-ја јер можете да користите једну крајњу тачку за приступ подацима из многих шема.

ГрапхКЛ ублажава проблеме као што су прекомерно и недовољно учитавање у РЕСТ-у. Можете да направите клијента који захтева одређена поља без потребе за додатним АПИ позивима.

Постоји неколико Го пакета које можете искористити за прављење апликација заснованих на ГрапхКЛ-у, од сервера до АПИ-ја.

1. Пакет гклген

гклген (ГрапхКЛ генератор) је пакет богат функцијама, безбедан тип за генерисање и изградњу ГрапхКЛ сервера и АПИ-ја.

Пакет гклген користи приступ на првом месту према шеми, којим користите ГрапхКЛ СДЛ да дефинишете своју шему. Затим генерише шаблонски код који можете да прилагодите да бисте подесили свој ГрапхКЛ сервер и АПИ.

instagram viewer

гклген је један од комплетнијих ГрапхКЛ пакета у екосистем Го. Можете да генеришете документацију и примере са пакетом и креирате упите, мутације и претплате.

гклген обезбеђује повезивање типова, уграђивање, интерфејсе, генерисане улазе и набрајања. Пакет такође пружа функционалност за отворено праћење, куке за евидентирање грешака, учитавање података, истовременост и повећану сложеност упита.

Након што дефинишете своју ГрапхКЛ шему — као што бисте то урадили са било којом библиотеком прве шеме — користићете гклген апликацију командне линије да генеришете шаблонски код из шеме у вашем пројекту.

Створити алати.иди датотеку у свом радном директоријуму и додајте ове линије кода да бисте укључили гклген пакет:

// +буилд алати

пакет алата

увоз _ "гитхуб.цом/99десигнс/гклген"

Тхе алати.иди датотека специфицира алате за прављење за гклген пакет.

Покрените ове команде у свом радном директоријуму да бисте инсталирали гклген пакет и његове зависности:

иди инсталирај гитхуб.цом/99десигнс/гклген@латест
иди мод тиди

Можете иницијализовати нови ГрапхКЛ пројекат када покренете ГрапхКЛ пакет са у томе наредба као аргумент:

иди покрените гитхуб.цом/99десигнс/гклген инит

Мораћете да имате своју шему у а сцхема.грапхкл датотеку која се налази у вашем радном директоријуму за иницијализацију пројекта.

Покренути сервер.го датотеку за покретање вашег ГрапхКЛ сервера након додавања функционалности вашој ГрапхКЛ апликацији:

иди покрените сервер.иди

2. Пакет грапхкл-го

Пакет грапхкл-го је популарна библиотека ГрапхКЛ која има за циљ да обезбеди комплетан ГрапхКЛ нацрт спецификације за изградњу ГрапхКЛ сервиса у Го.

Пакет грапхкл-го користи приступ типовима времена извршавања; имате опцију да декларишете своју шему у Го коду, а пакет проверава време извођења.

Можете да имплементирате упите, мутације и претплате и генеришете примере са пакетом, али нема функционалности за генерисане енуме, улазе или отворено праћење.

грапхкл-го има минималан АПИ са подршком за уграђене пакете и популарне пакете трећих страна. Има подршку за ОпенТелеметри и ОпенТрацинг стандарде, проверу типа шеме у односу на разрешиваче, паралелно извршавање разрешивача и многе друге карактеристике.

Ако сте упознати са изградња РЕСТфул услуга у Го витх тхе хттп пакет, наћи ћете да је пакет грапхкл-го једноставан за коришћење.

Покрените ове команде у свом радном директоријуму да додате грапхкл-го пакет и његове зависности у ваш пројекат:

иди преузми гитхуб.цом/грапх-гопхерс/грапхкл-иди

Ево примера покретања једноставног ГрапхКЛ сервера:

пакет главни

увоз (
"Пријава"
"нет/хттп"

грапхкл "гитхуб.цом/грапх-гопхерс/грапхкл-иди"
"гитхуб.цом/грапх-гопхерс/грапхкл-иди/relay"
)

тип упит струцт{}

фунц(_ *упит)Здраво()низ { повратак "Здраво Свете!" }

фунцглавни() {
сцхемаЕкампле := `
тип упит {
здраво: Стринг!
}
`

сцхема := грапхкл. МустПарсеСцхема (сцхемаЕкампле, &куери{})
хттп. Хандле("/упит", &релеј. Руковалац{шема: шема})
Пријава. Фатално (хттп. ЛистенАндСерве(":8080", нула))
}

Тхе Здраво методом упит струцт је резолвер за крајњу тачку ГрапхКЛ која враћа здраво свет. Тхе сцхемаЕкампле променљива је дефиниција шеме, а сервер ће радити на порту 8080 са хттп пакета ЛистенАндСерве методом.

3. Тхундер Пацкаге

Тхе гром фрамеворк узима приступ структури прва; декларишете структуру која моделира вашу ГрапхКЛ шему. То генерише ГрапхКЛ шема из података Го за руковање групним упитима, живим упитима, мутацијама, претплатама и генерисањем примера.

Тхундер обезбеђује сигурност типова са везама за типове и другим карактеристикама, укључујући изградњу шеме засноване на рефлексији, уграђено паралелно извршавање и батцхинг, уграђени ГрапхиКЛ едитор и подељене шеме за већи ГрапхКЛ сервери.

У пакету Тхундер нема функционалности за уграђивање, интерфејсе, генерисане енуме или уносе, федерацију, отворено праћење или прилагођене грешке. Међутим, он је један од најлакших за коришћење у поређењу са другим популарним пакетима и одличан је почетни пакет ако немате ГрапхКЛ искуство.

Мораћете да покренете ову команду у терминалу вашег радног директоријума да бисте инсталирали Тхундер пакет и његове зависности:

иди набавите гитхуб.цом/самсарахк/тхундер/грапхкл

Мораћете да декларишете модел структуре за шему, напишете резолвере и инстанцирате сервер да бисте покренули једноставан ГрапхКЛ сервер са Тхундер пакетом.

увоз (
"контекст"
"нет/хттп"
"време"

"гитхуб.цом/самсарахк/тхундер/грапхкл"
"гитхуб.цом/самсарахк/тхундер/грапхкл/грапхикл"
"гитхуб.цом/самсарахк/тхундер/грапхкл/интроспецтион"
"гитхуб.цом/самсарахк/тхундер/грапхкл/сцхемабуилдер"
"гитхуб.цом/самсарахк/тхундер/реацтиве"
)

тип пошта струцт {
Наслов низ
Тело низ
ЦреатедАт тиме. време
}

// сервер је наш грапхкл сервер.
тип сервер струцт {
постови []пост
}

// регистерКуери региструје основни тип упита.
фунц(с * сервер)регистерКуери(шема * сцхемабуилдер. шема) {
обј := шема. упит()

обј. ФиелдФунц("постови", фунц() []пошта {
повратак с.постс
})
}

// регистерМутатион региструје тип мутације корена.
фунц(с * сервер)регистерМутатион(шема * сцхемабуилдер. шема) {
обј := шема. мутација()

обј. ФиелдФунц("ехо", фунц(аргс струцт{ Порука низ })низ {
повратак аргс. Порука
})
}

// регистерПост региструје тип поруке.
фунц(с * сервер)регистерПост(шема * сцхемабуилдер. шема) {
обј := шема. Објекат("Пост", пост{})

обј. ФиелдФунц("старост", фунц(цтк контекст. Контекст, п *пост)низ {
реактиван. ИнвалидатеАфтер (цтк, 5*време. друго)
повратак време. Пошто (стр. ЦреатедАт).Стринг()
})
}

// шема гради грапхкл шему.
фунц(с * сервер)шема() *грапхкл.Шема {
буилдер := сцхемабуилдер. НоваСхема()
с.регистерКуери (буилдер)
с.регистерМутатион (буилдер)
с.регистерПост (буилдер)
повратак градитељ. МустБуилд()
}

фунцглавни() {
// Инстанцирајте сервер, направите сервер и послужите шему на порту 3030.
сервер := &сервер{
постови: []пост{
{Наслов: "први пост!", Тело: "Први сам био овде!", ЦреатедАт: тиме. Сада()},
{Титле: "грапхкл", Боди: "да ли сте чули за Тхундер?", ЦреатедАт: тиме. Сада()},
},
}

сцхема := сервер.сцхема()
интроспекција. АддИнтроспецтионТоСцхема (шема)

// Изложи шему и графику.
хттп. Хандле("/грапхкл", грапхкл. Руковалац (шема))
хттп. Хандле("/грапхикл/", хттп. СтрипПрефик("/грапхикл/", грапхикл. руковалац()))
хттп. ЛистенАндСерве(":3030", нула)
}

Тхе пошта струцт је модел за ГрапхКЛ шему, и сервер струцт је инстанца сервера. Тхе регистерКуери, регистерМутатион, и регистерПост методе су функције разрешавања за упите, мутације и складиштење података.

Тхе главни функција почиње са ГрапхКЛ сервером на порту 3030 и ГрапхКЛ едитор.

Можете да постављате упите за ГрапхКЛ АПИ-је у го са уграђеним пакетима

ГрапхКЛ је заснован на ХТТП-у и можете користити ГрапхКЛ АПИ-је са уграђеним хттп пакет и други пакети слични РЕСТфул АПИ-јима. Постоје и пакети у Го-овом екосистему који ће вам омогућити да брзо користите ГрапхКЛ АПИ-је.