GraphQL
Este plugin te permite capturar peticiones GraphQL e inspeccionarlas más tarde mientras reproduces las grabaciones de las sesiones. Esto resulta muy útil para entender y solucionar problemas. El plugin GraphQL es compatible con las implementaciones de Apollo y Relay.
Instalación
Section titled Instalaciónnpm i @openreplay/tracker-graphql
La llamada a plugin devolverá la función, que recibe cuatro variables operationKind, operationName, variables y result. Devuelve result sin cambios.
Si tu sitio web es una aplicación de página única (SPA)
Section titled Si tu sitio web es una aplicación de página única (SPA)import OpenReplay from '@openreplay/tracker';
import trackerGraphQL from '@openreplay/tracker-graphql';
//...
const tracker = new OpenReplay({
projectKey: PROJECT_KEY,
});
export const recordGraphQL = tracker.use(trackerGraphQL());
tracker.start();
Si tu aplicación web se renderiza en el servidor (SSR)
Section titled Si tu aplicación web se renderiza en el servidor (SSR)Sigue el ejemplo de abajo si tu aplicación es SSR. Asegúrate de que tracker.start() se llame una vez que la aplicación se haya iniciado en el lado del cliente (en useEffect o componentDidMount).
// openreplay.js
import OpenReplay from '@openreplay/tracker/cjs';
import trackerGraphQL from '@openreplay/tracker-graphql/cjs';
export const tracker = new OpenReplay({
projectKey: PROJECT_KEY
});
export const recordGraphQL = tracker.use(trackerGraphQL());
// MyApp.js
import { tracker } from './openreplay';
function MyApp() {
useEffect(() => { // use componentDidMount in case of React Class Component
tracker.start();
}, [])
}
//...
Relay
Section titled RelayPara Relay debes colocar manualmente la llamada a recordGraphQL en la implementación de NetworkLayer. Si tienes la forma estándar Network.create para implementarlo, entonces debes seguir el ejemplo de abajo.
import { Environment } from 'relay-runtime';
import { recordGraphQL } from './openreplay'; // see above for recordGraphQL definition
//...
function fetchQuery(operation, variables, cacheConfig, uploadables) {
return fetch('ENDPOINT', {
//...
})
.then(response => response.json())
.then(result =>
recordGraphQL(operation.operationKind, operation.name, variables, result)
);
}
//...
const network = Network.create(fetchQuery);
Consulta Relay Network Layer para más detalles.
Apollo
Section titled ApolloPara Apollo debes crear un nuevo ApolloLink con la llamada a recordGraphQL y colocarlo en tu cadena. Aquí tienes un ejemplo de cómo hacerlo.
import { ApolloLink } from '@apollo/client';
import { recordGraphQL } from './openreplay'; // see above for recordGraphQL definition
const trackerApolloLink = new ApolloLink((operation, forward) => {
return forward(operation).map((result) => {
const operationDefinition = operation.query.definitions[0];
return recordGraphQL(
operationDefinition.kind === 'OperationDefinition' ? operationDefinition.operation : 'unknown?',
operation.operationName,
operation.variables,
result
);
});
});
//...
const link = ApolloLink.from([
trackerApolloLink,
//...
]);
Consulta Apollo Link y Apollo Networking para más detalles.
Tutorial
Section titled TutorialSi buscas un ejemplo práctico de cómo usar este plugin para capturar datos de operaciones (mutaciones y consultas) en tus repeticiones de sesión, consulta nuestro tutorial detallado aquí.
¿Tienes preguntas?
Section titled ¿Tienes preguntas?¿Tienes problemas para configurar este plugin? Conéctate a nuestro Slack o consulta nuestro Foro y obtén ayuda de nuestra comunidad.