From 9ddca46ea7a48655c57c49c1d3dbb1efb33543a1 Mon Sep 17 00:00:00 2001 From: Matthieu Lamalle Date: Thu, 25 Jul 2019 10:22:54 +0200 Subject: [PATCH] Integration of graphiql UI --- README.md | 67 ++++++++++++++++++++++++++++++++++++++++++--- graphql | Bin 12299043 -> 12299043 bytes main.go | 5 ++-- queries/queries.go | 2 +- 4 files changed, 67 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 4c6a534..b0fa5ca 100644 --- a/README.md +++ b/README.md @@ -6,27 +6,69 @@ Exemple d'API GraphQL, PostgresQL, en Go go build && go run . ``` +Accéder à l'API : +``` +http://localhost:8383/graphql +``` + +Accéder à l'UI graphiql : +``` +http://localhost:8383 +``` + ## Query Toute rếquete visant à récupérer une donnée est appellée une 'Query' ``` -# Exemple de Query +# Query via curl curl -X POST \ -H 'Content-Type: application/json' \ - -d '{"query": "{ user { id,firstname,lastname,roles{name} } }"}' \ - http://localhost:8383/ + -d '{"query": " query { user { id,firstname,lastname,roles{name} } }"}' \ + http://localhost:8383/graphql ``` +``` +# Query via GraphQL + +query GetAllUsers { + user { + id + firstname + lastname + roles { + name + } + } +} + +``` + ## Mutation Toute requếte visant à modifier une donnée est appellée une 'Mutation' ``` +# Mutation via curl + curl -X POST \ -H 'Content-Type: application/json' \ -d '{"query": "mutation { createUser(firstname: \"John\", lastname: \"Snow\") { id,firstname,lastname } }"}' \ - http://localhost:8383 + http://localhost:8383/graphql + +``` + +``` +# Mutation via GraphQL + +mutation CreateUser($firstname: String!, $lastname: String!) { + createUser(firstname: $firstname, lastname: $lastname) { + id + firstname + lastname + } +} + ``` @@ -35,10 +77,27 @@ Si besoin, lancer un serveur postgres via Docker ``` mkdir $HOME/docker/postgres/volumes + docker run --rm -d \ --name postgres \ -e POSTGRES_PASSWORD=postgres \ -p 5432:5432 \ -v $HOME/docker/postgres/volumes:/var/lib/postgresql/data \ postgres + +psql -U postgres -h localhost +> create user graphql; +> alter user graphql with encrypted password 'graphql'; +> create database graphql; +> GRANT ALL PRIVILEGES ON DATABASE "graphql" to graphql; +> \exit + +psql -U graphql -h localhost +> CREATE TABLE users ( +id SERIAL PRIMARY KEY, +firstname TEXT, +lastname TEXT + ); + + ``` diff --git a/graphql b/graphql index ed1aa9914ed0875e9f52347009392096b10eed6c..618c0df13719fbb3d5f983d5ed0ebf9163b4c361 100755 GIT binary patch delta 2770 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 GNB;$0Aq+tP delta 2773 zcmXZeX*d)L7r=31Fk@ea60)?|ml+xw`#!~FEy+40YY1b_2w56SQMZXi$soy^FN_ftN)geV8~gM6I(3WxZ#kl4L%IQ|`MArgs0 z8W@cJE`ve>lw9WjO0F;)D(F1x_b#Zg7wYQ&>uMnqg+r3=eEz*76%wF!h8BOg7+4%P3kkOmIHPeYDpWfrB*-R2%SGpuKjvhR z6V^<}-_P$@5JBHYL(3pC+|Aw9SNmAtDVNwN|8wW8TrAVr!kKJgPOuAb0d9Z*Jb)MQ z0VF^Hejoq@fe`rjRs@IwF(3{k02)XFDX<&t0n%VEkO8tl4(tQ+KmjNMC9oeH00+S# zpbS)iDo_LJKm%w3Eual_00v-zF3*r_17w0MkPR*aD#!u3AP?j-EViz!{6l$W?Ra6e#NbBZ?Al)w*HZ2! zNmMB6HG7i8ajN!hm)_Whye?X=aIHLsC*$6c$9@Ll2baVM`xUB8v%arRrd2!gOXdcu zS^M2bYFP^wt(n^861?L&QxKM)iY9K}tf>7m{MNs{J@&7T>5urRWuxhSgU4L6Z{v7> zZs(hHY-`0)R#J%J|A1{xPDn`DI{V}Aof+{9U;8VMmW%#e_^xli zeB=pFNx#8;S}0y$>UH9=+dTnkN>`Fsx^j*S_Mv?yTdxt0RP#KKANs^eIxfI#6Y#+& zgUacnu}h_Fx2UX$g0+Bf8G0c5m(f^v$lR^*hmNT>+IK02tyzza#c zY2>5ViydTlc`mi9IFwRb5rbTA6z%YZ4r7@q6TR8BXK|Ye>J1%qLr0!k;`jQmDrSuI zy`JgL^wT1_)Rs_!VGbC)aqZpymKl4EVP9k#`;dyBC^Gv&m!TG>yIGI6WIq24NnGWcdZIt+}KQC%eQ}2@|iV|E!x+Y}Z%x^47iIs-I<3)d^yv?c}UJ)3|5V zlExb{&snE<^NrC|ZwfUu(A-wav?n@c-i-V)=&O5m=8h+M?6A(=dJ&eW&7u@4NvM|V zC!)uE)%RiLQ~;xl{>Kgl^({Ypa_{$+wbKIoWf!QThl81Bsd@4^4PP3r>jza)wYG=C znnAf`kmpy{B`7CI3HbR4F6YRa(E33==N*?d1&^hy`Jh&Nfs>bKB4<*1;@i95^;VDD ze&YNb&ulAt%DrMFxX|=a$uL6G&f4$-ExV|UIYobwFmy$hH22KYf6ZpcN2F7OjR`EH z@8d_jyPdIcL_WiI!J}rPS}?hi$kd}m{PHs{2$h@ms_W+%P0@Xk!79C*ukyie>RX!i zf%QW#EHf{NWnJNEET1wHks!9}Gg^}$?Kg-McSDAB&R9gcNn#zTGG#HLd5oru9DW_^ zV#P00GX0lyi)rh97l}gDSj->iX&VESNSaAcblnqO6%U0}B_UF8#B4y5jf*H{!(xwd z7VSj$^c6WeuDRxi-rV(0xf#`3F~?y=Vw0&U=ER-iFY)>ph3nJ?&BwnHa68qPXF^*t z5S6B)A~(E8A2uRKd7~WKBcw`%-;`$weZG(06K%}FPwX~&;9K39oj)?pcTg~rnc5zimrJ}(sK~0i~AnUyLa<$}=V{)D+Nz-gzMZJj9t7% zE?K3*RXJTdRbVKPkI-FQhNtb