Maison interface Web js tutoriel Node.js Starter Project avec GraphQL, Redis, JWT et Sequelize

Node.js Starter Project avec GraphQL, Redis, JWT et Sequelize

Nov 13, 2024 am 01:56 AM

Node.js Starter Project dengan GraphQL, Redis, JWT, dan Sequelize

Ce modèle fournit un Projet de démarrage Node.js préconfiguré avec GraphQL pour l'API, Redis pour la mise en cache et les tâches temporaires. stockage de données, JWT pour l'authentification et l'autorisation, ainsi que Sequelize pour les ORM connectés à des bases de données relationnelles telles que PostgreSQL ou MySQL. Le projet a une structure modulaire qui vous permet de développer instantanément des applications Web modernes avec des fonctionnalités intégrées et évolutives.

? Aperçu du projet

Ce projet est conçu pour faciliter le développement d'applications backend avec une API GraphQL qui utilise Redis pour la mise en cache des données et JWT pour sécuriser l'API. Sequelize est utilisé comme ORM pour faciliter l'interaction avec les bases de données relationnelles. De plus, il existe un middleware qui facilite la gestion de l'authentification, de la validation et de la journalisation.

Principales fonctionnalités

  • API GraphQL pour des requêtes et des mutations de données plus flexibles et efficaces
  • Authentification JWT pour une authentification sécurisée basée sur un jeton
  • Redis pour la mise en cache des données et l'amélioration des performances des applications
  • Sequelize ORM pour la gestion de bases de données relationnelles
  • Middleware pour une gestion centralisée des autorisations et des demandes
  • Modulaire et bien structuré pour une évolutivité et une maintenance plus facile

?️ Technologie utilisée

  • Node.js : Plateforme de création d'applications côté serveur avec JavaScript. Apprendre encore plus
  • GraphQL : langage de requête pour les API qui permet une récupération de données efficace et flexible. Apprendre encore plus
  • Redis : stockage de données temporaire (en mémoire) qui est souvent utilisé pour la mise en cache et le courtage de messages. Apprendre encore plus
  • JWT : Technologie d'authentification sécurisée et simple basée sur des jetons. Apprendre encore plus
  • Sequelize : ORM pour Node.js qui prend en charge PostgreSQL, MySQL et d'autres bases de données relationnelles. Apprendre encore plus

? Étapes pour configurer et exécuter un projet

1. Dépôt de clones

Tout d'abord, clonez ce référentiel de modèles sur votre machine locale :

git clone https://gitlab.com/dioarafi1/graphify-api.git
cd graphify-api
Copier après la connexion
Copier après la connexion

Si vous partez de zéro, initialisez le nouveau projet avec :

git clone https://gitlab.com/dioarafi1/graphify-api.git
cd graphify-api
Copier après la connexion
Copier après la connexion

2. Installation des dépendances

Après avoir cloné le référentiel ou créé un nouveau projet, exécutez la commande pour installer les dépendances requises :

mkdir blog-api
cd blog-api
npm init -y
Copier après la connexion

Cela installera toutes les dépendances répertoriées dans le fichier package.json.


3. Configuration de l'environnement

Créez un fichier .env dans le répertoire racine du projet et ajoutez les configurations suivantes pour Redis, JWT et Database :

yarn install
Copier après la connexion

Modifiez l'utilisateur, le mot de passe et ma base de données en fonction de la configuration de votre base de données.


4. Préparer la base de données avec Sequelize

Si vous n'avez pas de base de données configurée, exécutez la commande pour initialiser Sequelize et créer le modèle :

DATABASE_URL="postgresql://user:password@localhost:5432/mydatabase"
JWT_SECRET="your_jwt_secret_key"
REDIS_HOST="localhost"
REDIS_PORT="6379"
Copier après la connexion

Cela créera une structure de répertoires de configuration, de modèles et de migrations au sein de votre projet. Ensuite, créez les modèles nécessaires à l'application tels que User et Post, et effectuez des migrations pour créer des tables dans la base de données.

yarn sequelize init
Copier après la connexion

Assurez-vous que la base de données est en cours d'exécution (par exemple en utilisant PostgreSQL ou MySQL).


5. Configuration du serveur GraphQL

Installer les dépendances pour Apollo Server et GraphQL :

yarn sequelize db:migrate
Copier après la connexion

Après cela, créez un fichier de configuration, un schéma et des résolveurs de serveur GraphQL. Vous pouvez configurer le serveur GraphQL de la manière suivante :

src/serveur.ts

yarn add apollo-server graphql
Copier après la connexion

src/graphql/schema.ts

Définir le schéma GraphQL pour les requêtes et les mutations :

import { ApolloServer } from 'apollo-server-express';
import express from 'express';
import { typeDefs, resolvers } from './graphql';
import { authenticateJWT } from './middlewares/auth';
import { sequelize } from './config/database';

const app = express();

// Gunakan middleware JWT
app.use(authenticateJWT);

// Inisialisasi Apollo Server
const server = new ApolloServer({
  typeDefs,
  resolvers,
  context: ({ req }) => ({ user: req.user }),
});

server.applyMiddleware({ app });

const PORT = process.env.PORT || 4000;

app.listen(PORT, async () => {
  console.log(`Server running at http://localhost:${PORT}${server.graphqlPath}`);
  await sequelize.authenticate();
  console.log('Database connected');
});
Copier après la connexion

src/graphql/resolvers.ts

Implémenter des résolveurs pour les requêtes et les mutations :

import { gql } from 'apollo-server-express';

export const typeDefs = gql`
  type User {
    id: ID!
    username: String!
  }

  type Post {
    id: ID!
    title: String!
    content: String!
    user: User!
  }

  type Query {
    posts: [Post]
    post(id: ID!): Post
    users: [User]
  }

  type Mutation {
    createPost(title: String!, content: String!): Post
    register(username: String!, password: String!): User
    login(username: String!, password: String!): String # JWT token
  }
`;
Copier après la connexion

6. Exécution du serveur pour le développement

Pour exécuter le serveur dans un environnement de développement avec hot-reload, utilisez la commande suivante :

import { Post, User } from '../models';
import jwt from 'jsonwebtoken';
import bcrypt from 'bcryptjs';

export const resolvers = {
  Query: {
    posts: () => Post.findAll(),
    post: (_, { id }) => Post.findByPk(id),
    users: () => User.findAll(),
  },
  Mutation: {
    createPost: async (_, { title, content }, { user }) => {
      if (!user) throw new Error('Authentication required');
      const post = await Post.create({ title, content, userId: user.id });
      return post;
    },
    register: async (_, { username, password }) => {
      const hashedPassword = await bcrypt.hash(password, 10);
      const user = await User.create({ username, password: hashedPassword });
      return user;
    },
    login: async (_, { username, password }) => {
      const user = await User.findOne({ where: { username } });
      if (!user) throw new Error('User not found');

      const match = await bcrypt.compare(password, user.password);
      if (!match) throw new Error('Invalid password');

      const token = jwt.sign({ userId: user.id }, process.env.JWT_SECRET!, { expiresIn: '1h' });
      return token;
    },
  },
};
Copier après la connexion

Le serveur fonctionnera sur http://localhost:4000 et vous pourrez accéder au GraphQL Playground pour tester les requêtes et les mutations de l'API.


? Structure du répertoire du projet

Cette structure de répertoires de projet est conçue pour séparer les différentes parties de l'application afin de la rendre plus modulaire et plus facile à maintenir :

yarn dev
Copier après la connexion

? Déploiements

Pour préparer le projet pour la production, utilisez la commande suivante pour créer TypeScript en JavaScript :

/myapp
├── src
│   ├── middlewares      # Berisi middleware untuk otentikasi (JWT), caching (Redis), dan validasi
│   ├── routes           # Definisi endpoint API dan resolver GraphQL
│   ├── services         # Logika bisnis utama dan pengolahan data
│   ├── app.ts           # File utama untuk inisialisasi aplikasi dan middleware
│   ├── graphql          # Menyimpan konfigurasi GraphQL, schema, dan resolvers
│   ├── models           # Model Sequelize untuk mengelola database relasional
│   ├── config           # File konfigurasi global untuk Redis, JWT, database, dll
│   ├── index.ts         # Entry point aplikasi, menginisialisasi server dan middleware
│   ├── resolvers        # Berisi resolver GraphQL untuk query dan mutasi
│   ├── server.ts        # File untuk setup Apollo Server dan konfigurasi GraphQL
│   ├── schema           # Definisi schema GraphQL
│   ├── types            # TypeScript types dan interfaces untuk GraphQL dan lainnya
│   └── utils            # Berisi helper dan fungsi utility
├──

 .env                 # File konfigurasi environment (Redis, JWT Secret, Database URL)
├── package.json         # Metadata proyek dan dependensi
└── tsconfig.json        # Konfigurasi TypeScript
Copier après la connexion

La sortie sera dans le dossier dist/ et prête à être déployée sur le serveur de production.

Préparation aux plateformes cloud

Ce projet peut être déployé sur des plateformes telles que Heroku, AWS ou DigitalOcean en suivant les étapes suivantes :

  1. Pousser le code vers le référentiel Git (GitHub, GitLab ou autres).
  2. Définissez les variables d'environnement sur la plate-forme cloud sélectionnée (Redis, JWT Secret, URL Database).
  3. Déployez le projet à l'aide de commandes ou d'intégrations depuis la plateforme cloud.

? Ressource

  • Documentation GraphQL
  • Documentation Redis
  • Documentation JWT
  • Séqueliser la documentation

En suivant les étapes ci-dessus, vous pouvez désormais exécuter et développer des applications API GraphQL à l'aide de Redis, JWT et Sequelize.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Démystifier javascript: ce qu'il fait et pourquoi c'est important Démystifier javascript: ce qu'il fait et pourquoi c'est important Apr 09, 2025 am 12:07 AM

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Qui est payé plus de python ou de javascript? Qui est payé plus de python ou de javascript? Apr 04, 2025 am 12:09 AM

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Apr 04, 2025 pm 05:09 PM

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

JavaScript est-il difficile à apprendre? JavaScript est-il difficile à apprendre? Apr 03, 2025 am 12:20 AM

Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.

Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido?
ou:
Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Apr 04, 2025 pm 05:36 PM

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? Apr 04, 2025 pm 05:12 PM

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

L'évolution de JavaScript: tendances actuelles et perspectives d'avenir L'évolution de JavaScript: tendances actuelles et perspectives d'avenir Apr 10, 2025 am 09:33 AM

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

See all articles