Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Soluciones para problemas comunes de generación de esquemas de GraphQL, autorización, introspección y problemas de relación en data API Builder.
Preguntas frecuentes
¿Qué es GraphQL API en DAB?
Data API Builder genera automáticamente una API de GraphQL para cada entidad configurada en dab-config.json. DAB crea tipos de consulta y mutación basados en las definiciones de entidad y traduce las solicitudes de GraphQL en consultas de base de datos en tiempo de ejecución. No se requiere creación de esquemas para bases de datos relacionales; Cosmos DB requiere un archivo de esquema graphQL.
¿Dónde está el punto de conexión de GraphQL?
El punto de conexión de GraphQL está disponible en /<graphql-path>, que tiene /graphqlcomo valor predeterminado . La ruta de acceso se puede personalizar mediante la --graphql.path opción en dab init o editando dab-config.json. El IDE de GraphQL (Banana Cake Pop) está disponible en la misma ruta cuando DAB se ejecuta en modo desarrollo.
¿Admite DAB suscripciones de GraphQL?
N.º Data API Builder no admite actualmente suscripciones de GraphQL. Solo se admiten consultas y mutaciones. Si la aplicación requiere actualizaciones en tiempo real, considere la posibilidad de sondear el punto de conexión de consulta o usar un servicio de eventos independiente junto con DAB.
Problemas comunes
El esquema de GraphQL no se ha generado
Síntoma: El punto de conexión de GraphQL no devuelve ningún tipo para una entidad o falta la entidad del esquema.
Causa: La entidad no está habilitada para GraphQL o la configuración de la entidad contiene un error que impide la generación de esquemas.
Resolución: Abra dab-config.json y confirme que la entidad tiene "graphql": { "enabled": true } o que graphql no está establecida explícitamente en false. Compruebe los registros de inicio de DAB para ver si hay errores de generación de esquemas. Asegúrese de que la tabla de source la entidad existe en la base de datos y que el usuario de la base de datos tiene privilegios suficientes para leer sus metadatos.
La mutación devuelve el error de autorización
Síntoma: Una create mutación, update o delete devuelve un error de autorización o permiso denegado.
Causa: El rol usado en la solicitud no tiene el permiso necesario configurado para la operación de mutación en la entidad.
Resolución: Compruebe la permissions matriz de la entidad en dab-config.json. Asegúrese de que el rol (por ejemplo, authenticated) tiene create, update o delete listados en su actions. Use dab update para agregar el permiso y, a continuación, reinicie DAB.
Introspección deshabilitada en producción
Síntoma: Los clientes o herramientas de GraphQL reciben un error como Introspection is not allowed al consultar el esquema.
Causa: DAB deshabilita la introspección de GraphQL cuando se ejecuta en modo de producción. Este es el comportamiento esperado y es un valor predeterminado de seguridad para evitar exponer el esquema a clientes no autorizados.
Resolución: Este comportamiento es por diseño. Para habilitar la introspección durante el desarrollo, ejecute DAB con --no-https-redirect o confirme que host.mode está establecido en development en dab-config.json. No habilite la introspección en entornos de producción.
El campo de relación devuelve null
Síntoma: Una consulta en una entidad devuelve null para un campo de entidad relacionado aunque los datos relacionados existan en la base de datos.
Causa: La relación entre las dos entidades no está configurada en dab-config.jsono los campos de vinculación se asignan incorrectamente.
Resolución: Use dab update para agregar la relación, especificando --relationship, --cardinality, --target.entityy los campos de vinculación adecuados. Compruebe que los nombres de columna de clave externa en --relationship.fields y --target.fields coincidan con los nombres de columna reales de la base de datos. Compruebe los registros DAB para ver si hay errores de generación de combinaciones.
El nombre de la relación se superpone con un nombre de campo expuesto
Síntoma: Las consultas en una entidad con una relación devuelven resultados inesperados o un error de esquema, especialmente cuando un nombre de relación coincide con uno de los propios nombres de campo de la entidad.
Causa: El generador de API de datos no valida actualmente que los nombres de relación y los nombres de campo expuestos sean distintos en la misma entidad. Cuando se superponen, el esquema generado es ambiguo y las consultas pueden comportarse incorrectamente. Se trata de una limitación conocida que se realiza en el problema de GitHub n.º 1937.
Resolución: Asegúrese de que los nombres de relación no duplican ningún nombre de campo expuesto por la misma entidad. Cambie el nombre de la relación (utilizando --relationship en la actualización de dab) o del campo expuesto (utilizando --map en la actualización de dab) para hacerlos distintos.