Elm Graphql: automātiski ģenerējiet tipam drošus GraphQL vaicājumus pakalpojumā Elm

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai

Elm Graphql: automātiski ģenerējiet tipam drošus GraphQL vaicājumus pakalpojumā Elm

dillonkearns/elm-graphql

Kāpēc izmantot šo pakotni, nevis citas pieejamās Elm GraphQL pakotnes? Šis ir vienīgais, kas ģenerē tipam drošu kodu visai jūsu shēmai. Apskatiet šo emuāra ziņu, Type-Safe & Composable GraphQL in Elm , lai uzzinātu vairāk par šīs bibliotēkas motivāciju. (Tā ir arī vienīgā tipam drošā bibliotēka ar Elm 0.18 vai 0.19 atbalstu, skatiet šo diskursa pavedienu ).

Es izveidoju šo paketi, jo vēlējos iegūt kaut ko, kas:

  1. Nodrošina tipam drošus GraphQL vaicājumus (ja tas tiek kompilēts, tas ir derīgs saskaņā ar shēmu),
  2. Nevainojami un droši izveido dekodētājus, un
  3. Likvidē GraphQL līdzekļus par labu Elm valodas konstrukcijām, kur iespējams vienkāršākam lietotājam (piemēram, GraphQL mainīgajiem un fragmentiem jābūt tikai Elm funkcijām, konstantēm, ļauj).

Skatiet piemēru darbībā vietnē Ellie . Skatiet vairāk pilnīga koda piemēru sadaļā |_+_| mapi.



Pārskats

|_+_| ir Elm pakotne un tam pievienotais komandrindas koda ģenerators, kas izveido tipam drošu Elm kodu jūsu GraphQL galapunktam. Jūs nerakstat nekādus dekodētājus savai API, izmantojot |_+_|, tā vietā vienkārši atlasāt vajadzīgos laukus, līdzīgi kā standarta GraphQL vaicājumā, bet Elm. Piemēram, šis GraphQL vaicājums

|_+_|

tas izskatītos šādi: |_+_| (šajā piemērā kods ar prefiksu |_+_| ir automātiski ģenerēts)

|_+_|

GraphQL un Elm ir lieliski piemēroti, jo GraphQL tiek izmantots, lai ieviestu veidus, kurus jūsu API izmanto kā ievades un izvades, līdzīgi kā Elm tipa sistēma Elm. |_+_| vienkārši novērš šo plaisu, padarot Elm kodu informētu par GraphQL servera shēmu. Ja esat iesācējs GraphQL, graphql.org/learn/ ir lielisks veids, kā apgūt pamatus.

Pēc instalēšanas instrukciju izpildes, lai instalētu |_+_| NPM pakotne un atbilstošās Elm pakotnes (sīkāku informāciju skatiet sadaļā Iestatīšana). Kad esat instalējis visu, palaidiet |_+_| koda ģenerēšanas rīks ir tik vienkāršs kā šis:

|_+_|

Ja ir nepieciešamas galvenes, piemēram, nesēja marķieris, |_+_| karogu var piegādāt.

|_+_|

Mācību resursi

Ir pamatīga apmācība |_+_| dokumenti . |_+_|s ir šīs bibliotēkas pamatjēdziens, tāpēc iesaku izlasīt visu lapu (tā nav ļoti gara!).

|_+_| mape ir vēl viena lieliska vieta, kur sākt.

Ja vēlaties uzzināt vairāk GraphQL pamatus, šī ir lieliska apmācība un īsa lasāmviela: graphql.org/learn/

numpy cast uz int

Mana Elm Conf 2018 runa ir par filozofiju, kas ir aiz |_+_|

Veidi bez robežām Elm Conf Talk

(Lai pārietu tieši uz |_+_| demonstrāciju, pārejiet uz 13:06).

  • Mana 10 minūšu video apmācība par to, kā izmantot pielāgotos skalārus |_+_| izmantojot skalāro kodeku funkciju.
  • @martimatix GraphQL rokasgrāmata iesācējiem ar Elm
  • Graphqelm: izvēles argumenti valodā bez izvēles argumentiem, autors @martimatix
  • Visaptveroša Hasura komandas apmācība

Ja vēlaties uzzināt, kāpēc kods tiek ģenerēts noteiktā veidā, visticamāk, atbildi atradīsit sadaļā Bieži uzdotie jautājumi (FAQ) .

Elm Slack kanālā #graphql ir ļoti noderīga cilvēku grupa. Nevilcinieties uzdot visus jautājumus par darba sākšanu, paraugpraksi vai vienkārši vispārīgu GraphQL!

Uzstādīt

|_+_| ģenerē Elm kodu, kas ļauj izveidot tipam drošus GraphQL pieprasījumus. Šeit ir norādītas darbības, lai iestatītu |_+_|.

Pievienojiet |_+_| goba pakotne kā atkarība jūsu |_+_|. Jums būs arī jāpārliecinās, ka |_+_| ir jūsu projekta atkarība, jo ģenerētajā kodā ir daudz JSON dekoderu.

|_+_|

Instalējiet |_+_| komandrindas rīks, izmantojot npm. Tas ir tas, ko izmantosit, lai ģenerētu Elm kodu savai API. Ieteicams saglabāt |_+_| komandrindas rīku kā izstrādātāju atkarību, lai visi jūsu projekta dalībnieki izmantotu vienu un to pašu versiju.

|_+_|

Palaidiet |_+_| Iepriekš instalēts komandrindas rīks, lai ģenerētu kodu. Ja izmantojāt |_+_| Izmantojot iepriekš minēto metodi, failā package.json varat vienkārši izveidot skriptu, piemēram:

|_+_|

Ar iepriekš minēto jūsu |_+_|, kas darbojas |_+_| radīs |_+_| kods, lai jūs varētu piezvanīt |_+_|. Tagad varat izmantot ģenerēto kodu, kā parādīts šajā Ellie piemērā vai |_+_| mapi.

Abonementu atbalsts

Varat izveidot reāllaika API, izmantojot GraphQL abonementus un |_+_|. Vienkārši ievadiet ietvaram raksturīgo JavaScript kodu, lai atvērtu WebSocket savienojumu caur portu. Šeit ir tiešraides demonstrācija un tās pirmkods. Demonstrācijas serverī darbojas Elixir/Absinthe.

kā pārslēgt mezglu versijas

Līdzstrādnieki

Paldies Mario Martinez (martimatix) par jūsu atsauksmēm, gobas formāta PR un neticamo logotipa dizainu!

Paldies Maikam Stokam (mikeastock) par Travis CI iestatīšanu!

Paldies par rezervētajiem vārdiem pull pieprasījumu @madsflensted!

Milzīgs paldies @xtian par lielāko daļu 0.19 jaunināšanas darbu! :tada:

ctc pilna forma algā

Paldies Josh Adams (@knewter) par koda piemēru abonementiem ar Elixir/Absinthe, kas savienoti caur Elm portiem!

Paldies Romario, ka pievienojāt |_+_| !

Paldies Āronam Vaitam par jūsu pieprasījumu uzlabot |_+_| veiktspēju un stabilitāti solis!

Ceļvedis

Tiek atbalstītas visas galvenās funkcijas. Tas nozīmē, ka ar savu |_+_| ģenerēto kodu varat izveidot jebkuru vaicājumu vai mutāciju, un tas ir garantēts, ka tas būs derīgs atbilstoši jūsu servera shēmai.

|_+_| ģenerēs kodu, lai jūs varētu ģenerēt abonementus un atšifrēt atbildes, taču tajā nav aplūkota zema līmeņa informācija par to, kā tās nosūtīt, izmantojot tīmekļa ligzdas. Lai to izdarītu, jums būs jāizmanto pielāgots kods vai pakotne, kas zina, kā sazināties, izmantojot tīmekļa ligzdas (vai jebkuru citu protokolu), lai iestatītu abonementu jūsu konkrētajam ietvaram. Skatiet šo diskusiju, lai uzzinātu, kāpēc šī informācija netiek tieši apstrādāta šajā bibliotēkā.

Es labprāt dzirdētu atsauksmes, ja izmantojat GraphQL abonementus. Jo īpaši es vēlētos redzēt reāllaika kodu piemērus, lai uzlabotu abonementu dizainu. Lūdzu, piezvaniet man Slack, nosūtiet ziņojumu #graphql kanālā vai atveriet Github problēmu, lai to apspriestu!

Es vēlētos izpētīt palīgu ģenerēšanas iespējas, lai padarītu savienojumu vienkāršāku lappušu izkārtošanu (pamatojoties uz releja kursora savienojumu specifikāciju). Ja jums ir idejas par šo zvanu, piesakieties šajā pavedienā.

Skatiet pilnu ceļvedi vietnē Trello.


Autors: dillonkearns
Avota kods: https://github.com/dillonkearns/elm-graphql
Licence: skatiet licenci

#graphql

Skatīt Arī: