Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
NotificationsYou must be signed in to change notification settings

curso-graphQL/2-hola-mundo-graphql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  1. Crear/configurar archivos necesarios
  2. Instalación de dependencias
  3. Instalación de dependencias
  4. Inicializar el servidor express con los ajustes por defecto
  5. Pasar de Node Express a GraphQL
  6. Pasar de Node Express a GraphQL

1. Crear/configurar archivos necesarios

  1. Generamos el archivopackage.json inciando el proyecto con el comandonpm init.
  2. Generamos el archivotsconfig.json para configurar typeScript mediante el comandonpx tsc --init --rootDir src --outDir build --lib dom,es6 module commonjs --removeComments --target es6

2. Instalación de dependencias

En este proyecto necesitarremos las siguientes dependencias:

  • express
  • express-graphql
  • graphql
  • graphql-import-node
  • compression
  • cors
  • typescript
  • graphql-tools
  • graphql-playground-middleware-express
  • nodemon
  • ts-node

Dependencias de producción:

npm install express express-graphql graphql ncp http graphql-import-node compression cors typescript graphql-tools graphql-playground-middleware-express nodemon ts-node

Dependencias de desarrollo:

npm install @types/compression @types/express @types/cors @types/express-graphql @types/node @types/graphql -D


3. Configuración de scripts package.json

En el archivopackage.json incluimos la siguiente propiedad:

"scripts": {"start":"node build/server.js","build":"tsc -p . && ncp src/schema build/schema","start:dev":"npm run build:dev","build:dev":"nodemon 'src/server.ts' --exec 'ts-node' src/server.ts -e ts.graphql"  },

Creamos en la raiz la carpeta src y dentro de ella el archivo server.js (punto de entrada de la aplicación).

Para comprobar que funciona correctamente enserver.js ponemos un console log que podrá verse en la terminal cuando ejecutemosnpm start:dev


4. Inicializar el servidor express con los ajustes por defecto

importexpressfrom'express';importcompressionfrom'compression';importcorsfrom'cors';constPORT=5300;constapp=express();app.use(cors());app.use(compression());app.use('/',(re,res)=>{res.send('Bienvenido al curso de GraphQL')});app.listen({port:PORT},()=>console.log(`Hola Mundo API GraphQL http://localhost:${PORT}`))

5. Pasar de Node Express a GraphQL

Debemos seguir los siguientes pasos inicialmente en el archivoserver.ts que luego refactorizaremos a nuevos archivos.

  1. Definimos lostypes:
consttypeDefs = `typeQuery {hola:String!holaConNombre(nombre:String!):String!holaAlCursoGraphQL:String!  }`;
  1. Definimos losresolvers:
constresolvers:IResolvers={Query:{hola():string{return'Hola Mundo';},holaConNombre(__:void,{ nombre}):string{return`Hola Mundo, hola${nombre}`;},holaAlCursoGraphQL():string{return"Hola Mundo al curso GraphQL";}}}
  1. Relacionamos lostypes con losresolvers
constschema:GraphQLSchema=makeExecutableSchema({  typeDefs,  resolvers});
  1. Modificamos la ruta para utilizar GraphQL. Debemos importar graphQlHTTP para poder utilizarlo.
import{graphqlHTTP}from'express-graphql';app.use('/',graphqlHTTP({  schema,graphiql:true}));
  1. Refactorización

En src creamos dos nuevos directorios para los resolvers y para el schema.

En el directorio resolvers creamos dos archivos:

  • query.ts
import{IResolvers}from'graphql-tools';constquery:IResolvers={Query:{hola():string{return'Hola Mundo';},holaConNombre(__:void,{ nombre}):string{return`Hola Mundo, hola${nombre}`;},holaAlCursoGraphQL():string{return"Hola Mundo al curso GraphQL";}}}exportdefaultquery;
  • resolversMap.ts
import{IResolvers}from'graphql-tools';importqueryfrom'./query';constresolvers:IResolvers={  ...query}exportdefaultresolvers;

En el directorio schema creamos dos archivos:

  • schema.graphql
typeQuery {hola:String!holaConNombre(nombre:String!):String!holaAlCursoGraphQL:String!}
  • index.ts
import{GraphQLSchema}from'graphql';import{makeExecutableSchema}from'graphql-tools';import'graphql-import-node';importtypeDefsfrom'./schema.graphql';importresolversfrom'../resolvers/resolversMap';constschema:GraphQLSchema=makeExecutableSchema({  typeDefs,  resolvers});exportdefaultschema;
  1. Sustituir graphiQL por apollo server

Primero desinstalamos la dependencia de express-graphql

npm uninstall express-graphql

Instalamos la dependencia de apollo server

npm install apollo-server-express

Modificamos el archivoserver.ts para incluir los cambios y utilizar el playground de apollo server

...import{ApolloServer}from'apollo-server-express';import{createServer}from'http';......constserver=newApolloServer({  schema,introspection:true});server.applyMiddleware({ app});consthttpServer=createServer(app);httpServer.listen({port:PORT},()=>console.log(`Hola Mundo API GraphQL http://localhost:${PORT}/graphql`)...

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp