Para crear una API GraphQL con Node.js, necesitas instalar algunas dependencias:
- `express`: Un marco de aplicación web para Node.js.
- `graphql`: Es el lenguaje de consulta principal para API.
- `express-graphql`: Es una función de middleware de Express que vincula una instancia de GraphQL.js a un servidor HTTP y proporciona un conjunto adicional de características.
Aquí está el proceso paso a paso:
1. Debemos crear primero un nuevo directorio y luego iniciar un nuevo proyecto de Node.js. Puedes abrir el terminal y escribir los siguientes comandos:
```
~ $ mkdir ejemplo-graphql
~ $ cd ejemplo-graphql
~/ejemplo-graphql $ npm init -y
```
2. A continuación, instalamos las dependencias que mencioné anteriormente:
```
~/ejemplo-graphql $ npm install express graphql express-graphql
```
3. Crear el archivo `index.js`, que es nuestro archivo principal:
```
~/ejemplo-graphql $ touch index.js
```
4. En este archivo, debes hacer lo siguiente:
- Requerir las dependencias necesarias.
- Definir tu esquema de GraphQL y tus resolvers.
- Crear el servidor Express y adjuntar la funcionalidad de GraphQL a una ruta específica.
Aquí tienes un ejemplo de cómo podría ser tu `index.js`:
```javascript
const express = require(‘express’);
const { graphqlHTTP } = require(‘express-graphql’);
const { buildSchema } = require(‘graphql’);
// Definir el esquema
const schema = buildSchema(`
type Query {
mensaje: String
}
`);
// Definir los resolvers
const root = {
mensaje: () => ‘¡Hola mundo!‘
};
// Inicializar el servidor Express
const app = express();
app.use(‘/graphql’, graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000, () => console.log(‘Express GraphQL Server en localhost:4000/graphql’));
```
5. Después de guardar este archivo, puedes ejecutar tu servidor con:
```
~/ejemplo-graphql $ node index.js
```
Ahora, deberías poder ir a `localhost:4000/graphql` en tu navegador y usar la interfaz de GraphiQL para interactuar con tu API.
Por supuesto, este es un ejemplo muy simple. Podrías tener muchos tipos diferentes en tu esquema y podrías obtener datos de diferentes fuentes en tus resolvers, como una base de datos o una API externa.