2019-07-24 16:51:40 +02:00
|
|
|
# gographql
|
|
|
|
|
2019-07-24 17:29:11 +02:00
|
|
|
Exemple d'API GraphQL, PostgresQL, en Go
|
|
|
|
|
|
|
|
```
|
|
|
|
go build && go run .
|
|
|
|
```
|
|
|
|
|
2019-07-25 10:22:54 +02:00
|
|
|
Accéder à l'API :
|
|
|
|
```
|
|
|
|
http://localhost:8383/graphql
|
|
|
|
```
|
|
|
|
|
|
|
|
Accéder à l'UI graphiql :
|
|
|
|
```
|
|
|
|
http://localhost:8383
|
|
|
|
```
|
|
|
|
|
2019-07-24 17:29:11 +02:00
|
|
|
## Query
|
|
|
|
Toute rếquete visant à récupérer une donnée est appellée une 'Query'
|
|
|
|
|
|
|
|
```
|
2019-07-25 10:22:54 +02:00
|
|
|
# Query via curl
|
2019-07-24 17:29:11 +02:00
|
|
|
|
|
|
|
curl -X POST \
|
|
|
|
-H 'Content-Type: application/json' \
|
2019-07-25 10:22:54 +02:00
|
|
|
-d '{"query": " query { user { id,firstname,lastname,roles{name} } }"}' \
|
|
|
|
http://localhost:8383/graphql
|
2019-07-24 17:29:11 +02:00
|
|
|
|
|
|
|
```
|
2019-07-25 10:22:54 +02:00
|
|
|
```
|
|
|
|
# Query via GraphQL
|
|
|
|
|
|
|
|
query GetAllUsers {
|
|
|
|
user {
|
|
|
|
id
|
|
|
|
firstname
|
|
|
|
lastname
|
|
|
|
roles {
|
|
|
|
name
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
2019-07-24 17:29:11 +02:00
|
|
|
## Mutation
|
|
|
|
Toute requếte visant à modifier une donnée est appellée une 'Mutation'
|
|
|
|
|
|
|
|
```
|
2019-07-25 10:22:54 +02:00
|
|
|
# Mutation via curl
|
|
|
|
|
2019-07-24 17:29:11 +02:00
|
|
|
curl -X POST \
|
|
|
|
-H 'Content-Type: application/json' \
|
|
|
|
-d '{"query": "mutation { createUser(firstname: \"John\", lastname: \"Snow\") { id,firstname,lastname } }"}' \
|
2019-07-25 10:22:54 +02:00
|
|
|
http://localhost:8383/graphql
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
```
|
|
|
|
# Mutation via GraphQL
|
|
|
|
|
|
|
|
mutation CreateUser($firstname: String!, $lastname: String!) {
|
|
|
|
createUser(firstname: $firstname, lastname: $lastname) {
|
|
|
|
id
|
|
|
|
firstname
|
|
|
|
lastname
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-07-24 17:40:27 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
## Postgres
|
|
|
|
Si besoin, lancer un serveur postgres via Docker
|
|
|
|
|
|
|
|
```
|
|
|
|
mkdir $HOME/docker/postgres/volumes
|
2019-07-25 10:22:54 +02:00
|
|
|
|
2019-07-24 17:40:27 +02:00
|
|
|
docker run --rm -d \
|
|
|
|
--name postgres \
|
|
|
|
-e POSTGRES_PASSWORD=postgres \
|
|
|
|
-p 5432:5432 \
|
|
|
|
-v $HOME/docker/postgres/volumes:/var/lib/postgresql/data \
|
|
|
|
postgres
|
2019-07-25 10:22:54 +02:00
|
|
|
|
|
|
|
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
|
|
|
|
);
|
|
|
|
|
2019-07-25 14:29:02 +02:00
|
|
|
> CREATE TABLE roles (
|
|
|
|
id SERIAL PRIMARY KEY,
|
|
|
|
name TEXT
|
|
|
|
);
|
2019-07-25 10:22:54 +02:00
|
|
|
|
2019-07-24 17:40:27 +02:00
|
|
|
```
|