API em GraphQL de uma escola de inglês.
O servidor GraphQL faz uma interface entre fontes de dados e disponibiliza esses dados para qualquer plataforma. Ou seja, ele pode selecionar dados de uma API REST, de microsserviços, de uma database.
# Install dependencies
$ npm install
# Run API Rest
$ npx json-server --watch api/data/dados.json
# Start Server
$ npm start
# running on port http://localhost:4000/
query() {
users {
nome
ativo
email
role {
id
type
}
}
}
query($userId: ID!) {
user(id: $userId) {
nome
ativo
email
role {
id
type
}
}
}
# variables
{
"userId": 1
}
query() {
turmas {
id
descricao
horario
vagas
inicio
docente
createdAt
}
}
query($turmaId: ID!) {
turma(id: $turmaId) {
id
descricao
horario
vagas
inicio
docente
createdAt
}
}
# variables
{
"turmaId": 1
}
mutation($user: UserInput) {
adicionarUser(user: $user) {
nome
ativo
email
role {
type
}
}
}
# variables
{
"user": {
"nome": "Camilla",
"ativo": true,
"email": "[email protected]",
"role": "DOCENTE"
}
}
mutation($userId: ID!, $user: UserInput) {
atualizarUser(id: $userId, user: $user) {
code
message
}
}
# variables
{
"userId": 1,
"user": {
"nome": "Marcos",
"ativo": true,
"email": "[email protected]",
"role": "ESTUDANTE"
}
}
mutation($userId: ID!) {
deletarUser(id: $userId) {
code
message
}
}
# variables
{
"userId": 1
}
mutation($turma: TurmaInput) {
adicionarTurma(turma: $turma) {
id
descricao
horario
vagas
inicio
docente
createdAt
}
}
# variables
{
"turma": {
"descricao": "super avançado",
"horario": "noturno",
"vagas": 5,
"inicio": "2020-12-01T00:00:00.000Z",
"docente_id": 5
}
}
mutation($turmaId: ID!, $turma: TurmaInput) {
atualizarTurma(id: $turmaId, turma: $turma) {
id
descricao
horario
vagas
inicio
docente
createdAt
}
}
# variables
{
"turmaId": 1,
"turma": {
"descricao": "super avançado",
"horario": "noturno",
"vagas": 8,
"inicio": "2020-12-01T00:00:00.000Z",
"docente_id": 5
}
}
mutation($turmaId: ID!) {
deletarTurma(id: $turmaId) {
message
}
}
# variables
{
"turmaId": 1
}