No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

GraphQL API y autogeneración de código

7/19
Recursos

Aportes 14

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para no tener que tipear cada que quieres levantar el server las variables de entorno puedes crear un archivo .env en la raíz del proyecto y ahí colocar los datos.

<code> 
NEXT_PUBLIC_SPACE_ID=${TU-SPACE-ID}
NEXT_PUBLIC_ACCESS_TOKEN=${TU-ACCESS-TOKEN}

Si no conoces nada de GraphQL te explico rapido.

GraphQL es es un lenguaje de consulta para APIs, y un entorno de ejecución para realizar consultas con datos.​ Es desarrollado por Facebook y lo increible es como si pareciera Algo a SQL pero para traer o manipular datos.

Hay muchas formas de poder usar GraphQL con JavaScript

Aqui te dejo un link https://graphql.org/code/#javascript de como integrar graphql
En conquetro me gusta usar Apollo

Te dejo el curso de GraphQL de Platzi

y

Un curso de Youtube muy bueno de GraphQL https://www.youtube.com/watch?v=Wl8O6wW4FJU&

{
  plantCollection (limit: 10){
    total
    limit
    items{
      plantName
      author{
        fullName
      }
    }
  }
}

Les recomiendo este curso en youtube de GraphQL es excelente para entender lo que está sucediendo.

https://www.youtube.com/watch?v=qux4-yWeZvo

La función fetchPlants

const fetchPlants = () => fetch('https://graphql.contentful.com/content/v1/spaces/<space>', {
    method: 'POST',
    headers: {
      'Content-type': 'application/json',
      Authorization: 'Bearer <Token>',
    },
    body: JSON.stringify({
      query: `{
        plantCollection (limit:10){
          total
          limit
          items{
            plantName
            author{
              fullName
              }
          }
        }
      }`
    })
  },
  )

Es posible que al momento de arrancar el proyecto les muestre este error:

Lo pude solucionar provisionalmente cambiando la linea 1 del archivo theme.ts que se encuentra en la carpeta UI de la siguiente forma:

Como estaba:

import createMuiTheme from '@material-ui/core/styles/createMuiTheme'

Como lo coloqué:

import { createMuiTheme } from '@material-ui/core/styles'

Por ahora soluciona el inconveniente pero ahora muestra una advertencia de que createMuiTheme es una función deprecada, si alguien conoce una mejor forma de adaptar el código es bienvenida.

Aqui les dejo los shortcuts principales
yo no me los sabia jaja y tenia temas con el auto completado

↑ Shift + Ctrl + P
Prettify query

Ctrl + ⤶ Enter
Run query

Ctrl + Space
Auto-complete

https://defkey.com/graphiql-shortcuts

Para aquellos en 2024 que esten siguiendo los pasos, les van a salir varios errores, si tienes una IA como copilot, los puede ir guiando, pero si no, algunos pasos: 1.- En el archivo next.config.js, así tienen que tenerlo, ya que da un error con una clave de webpack 5 const withBundleAnalyzer = require('@next/bundle-analyzer')({  enabled: process.env.ANALYZE === 'true',}) const config = {  *// Otras configuraciones si las hay*} module.exports = withBundleAnalyzer(config) 2.- Tienes que tener instalado una dependencia llamada cross-env, es para las variables de entorno : npm install cross-env --save-dev 3.- Tambien tienen que tener en su package.json asi: { "scripts": { "dev": "cross-env NODE\_OPTIONS=--openssl-legacy-provider next dev", "build": "cross-env NODE\_OPTIONS=--openssl-legacy-provider next build", "start": "cross-env NODE\_OPTIONS=--openssl-legacy-provider next start", "test": "yarn type-check", "type-check": "tsc --noEmit", "build:schema": "graphql-codegen --config codegen.yml" } } 4.-La version de react y react-dom tienen que actualizarlas: npm install react@latest react-dom@latest 5.- Hagan un npm audit fix --force para que todas las dependencias de compongan. Ahora si corre tu proyecto con npm run dev, el curso ya tiene sus años, entonces es algo complejo hacer que funcione en 2024, si no hacen esos pasos les va a salir que cambien de version de node a la 16. Espero les sirve alguno.

En el curso de Next.js con GraphQL en la clase auto generacion de codigo se muestra en detalle todo lo que hizo el profesor con la herramienta de auto generacion de codigo.
Asumo que como ya explicó el uso de esa herramienta ya no era necesario volver a explicarlo y solo optó por nombrarla.

Para no estar escribiendo las variables de entorno cada vez que levantemos nuestro server, dentro del archivo next.config.js hacemos los siguiente:

const TU_SPACE_ID = 'tu space id';
const TU_ACCESS_TOKEN = 'tu access token';

module.exports = {
  env: {
    NEXT_PUBLIC_SPACE_ID: TU_SPACE_ID,
    NEXT_PUBLIC_ACCESS_TOKEN: TU_ACCESS_TOKEN,
  }
}

De esta manera next tendra a la mano tus variables de entorno. deben reiniciar el server a la hora de agregar este codigo.

Para ahorrar tiempo con las variables de entorno cuando se inicia el server las incluí en el archivo next.config.js como muestra la bibliografía oficial :

https://nextjs.org/docs/api-reference/next.config.js/environment-variables

Y así solo necesitamos npm run dev sin las largas variables

Hola les dejo esta excelente introduccion a Graphql

https://www.youtube.com/watch?v=CFrKTrMJIBY&t=1612s&ab_channel=LaithHarb