es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo invocar la API de GraphQL desde una aplicación de java spring-boot? ¿Existe alguna anotación que admita la formación de consultas de GraphQL?

Estoy buscando una solución para implementar una llamada de API GraphQL desde una aplicación spring-boot, teniendo el esquema de consulta como sigue:

consulta{
getDetailsByRefNumber(RefNumbers: “”)
{
field1,
field2,
field3
}
}

¿Alguien tiene alguna idea de cómo implementar esto?
He revisado uno de los enlaces a continuación, pero no encontré ninguna solución.

https://stackoverflow.com/questions/47755642/are-there-any-java-based-graphql-client-to-invoke-graphql-server-from-java-code

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay algunos pasos a seguir para implementar una llamada a la API de GraphQL desde una aplicación spring-boot con el esquema de consulta dado.

    1. Primero, agregue la dependencia graphql-java a su proyecto agregando las siguientes dependencias de Maven a su archivo pom.xml:
    <dependency>
        <groupid>com.graphql-java</groupid>
        <artifactid>graphql-spring-boot-starter</artifactid>
        <version>{latest-version}</version>
    </dependency>
    
    1. Cree un archivo de esquema GraphQL con el siguiente contenido:
    type Query {
        getDetailsByRefNumber(RefNumbers: String): Details
    }
    
    type Details {
        field1: String
        field2: String
        field3: String
    }
    
    1. Cree un DataFetcher para obtener los datos de Details desde la base de datos. Aquí hay un ejemplo:
    @Component
    public class DetailsFetcher implements DataFetcher<details> {
    
        @Override
        public Details get(DataFetchingEnvironment environment) throws Exception {
            String refNumber = environment.getArgument("RefNumbers");
            // Obtenga los datos de la base de datos utilizando refNumber
            // Construya y devuelva un objeto Details
        }
    }
    
    1. Cree un resolutor de GraphQL para mapear la consulta al DataFetcher. Aquí hay un ejemplo:
    @Component
    public class QueryResolver implements GraphQLQueryResolver {
    
        @Autowired
        private DetailsFetcher detailsFetcher;
    
        public Details getDetailsByRefNumber(String refNumber) {
            return detailsFetcher.get(refNumber);
        }
    }
    
    1. Finalmente, agregue el servlet de GraphQL a su aplicación spring-boot en la clase principal:
    @SpringBootApplication
    public class MyApp {
    
        public static void main(String[] args) {
            SpringApplication.run(MyApp.class, args);
        }
    
        @Bean
        public ServletRegistrationBean graphQLServletRegistrationBean(GraphQLSchema schema) throws IOException {
            ExecutionStrategy defaultExecutionStrategy = new AsyncExecutionStrategy();
    
            return new ServletRegistrationBean(
                    new SimpleGraphQLServlet(schema, defaultExecutionStrategy),
                    "/graphql"
            );
        }
    
        @Bean
        public GraphQLSchema schema(QueryResolver queryResolver) {
            return new GraphQLSchemaGenerator()
                    .withResolverBuilders(new AnnotatedResolverBuilder())
                    .withOperationsFromSingleton(queryResolver)
                    .generate();
        }
    }
    

    Después de seguir estos pasos, su aplicación spring-boot debería poder manejar la llamada a la API de GraphQL con el esquema de consulta dado.

Comments are closed.