https://github.com/ericafenyo/graphql-presentation
A quick look at the GraphQL technology with an example project
https://github.com/ericafenyo/graphql-presentation
Last synced: over 1 year ago
JSON representation
A quick look at the GraphQL technology with an example project
- Host: GitHub
- URL: https://github.com/ericafenyo/graphql-presentation
- Owner: ericafenyo
- License: mit
- Created: 2021-07-28T08:25:27.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-07-30T11:29:13.000Z (almost 5 years ago)
- Last Synced: 2025-02-05T01:31:20.875Z (over 1 year ago)
- Language: TypeScript
- Size: 114 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Présentation de GraphQL
Un bref aperçu de la technologie GraphQL (30 juil 14h - TransWay)
## Checklist
- [ ] Introduction
- [ ] Configurer le serveur
> Queries
- [ ] Récupérer tous les utilisateurs
- [ ] Récupérer un.e seul.e utilisateur/rice
> Mutations
- [ ] Ajouter un utilisateur
- [ ] mettre à jour un.e utilisateur/rice
- [ ] Supprimer a un.e utilisateur/rice
- [ ] Supprimer tout
## Introduction
**GraphQL** (pour **Graph** **Q**uery **L**anguage), une alternative aux [API REST](https://fr.wikipedia.org/wiki/Representational_state_transfer)(**Re**presentational **S**tate**T**ransfer) est une [langage de requêtes](https://fr.wikipedia.org/wiki/Langage_de_requête), créé par Facebook en 2012, avant d'être publié comme projet [open-source](https://fr.wikipedia.org/wiki/Open_source) en 2015.
> ref: https://fr.wikipedia.org/wiki/GraphQL
## Le langage de requête
### Quelques types de données(Data types)
```graphql
# Enums
enum Gender {
MALE
FEMALE
UNSPECIFIED
}
# Object types
type Address {
id: ID! # GraphQL ID type
userId: ID!
streetName: String!
postalCode: Int
city: String!
country: String!
}
# Object types (complexe)
type User {
id: ID!
name: String!
age: Int!
gender: Gender! # enums
email: String!
weight: Float # nullable
address: Address # Object type
}
# interface
interface Organism {
id: ID!
name: String!
kingdom: Kingdom! # enums
genus: String!
species: String!
}
type BlueGreenAlgae implements Organism {
phylum: String!
}
```
## Queries and Mutations(Resolver)


## Prérequis
- node/NPM
- nestjs cli
## Mise en place du projet
J'ai décidé d'utiliser le framework [Nestjs](https://docs.nestjs.com) (qui utilise [Express](https://expressjs.com/) sous le capot) pour m'aider à accélérer la configuration du serveur.
1. Générer les fichiers du serveur avec le CLI Nest:
Depuis votre répertoire de développement préféré, exécutez ces commandes:
```bash
$ nest new graphql-nest-example
$ cd graphql-nest-example
```
2. Lancez le serveur
```bash
$ npm run start:dev
```
> N:B J'ai eu une erreur en démarrant le serveur.\
> https://stackoverflow.com/questions/66809411/webpack-typescript-errors-on-fresh-nestjs-app
3. Ajouter les dépendances de graphql
```bash
$ npm i @nestjs/graphql graphql apollo-server-express@2.x.x
```
4. Définir l'emplacement du fichier graphQL généré
```ts
// app.module.ts
import { GraphQLModule } from '@nestjs/graphql';
...
$ imports: [
GraphQLModule.forRoot({
autoSchemaFile: join(process.cwd(), 'src/schema.gql'),
}),
],
```