Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

390
Visualizações
usando webclient para llamar a la API de mutación grapql en el arranque de primavera

Estoy atascado al llamar a la API de mutación de graphQL en Spring Boot. Permítanme explicar mi escenario, tengo dos microservicios, uno es AuditConsumeService que consume el mensaje de ActiveMQ y el otro es la capa GraphQL que simplemente toma los datos del servicio de consumo y los coloca dentro de la base de datos. Todo bien cuando trato de enviar datos usando graphql playground o postman. ¿Cómo envío datos desde AuditConsumeService. En AuditConsumeService, intento enviar la API de mutación como una cadena. el método que es responsable de enviar eso a la capa graphQL es

 public Mono<String> sendLogsToGraphQL(String logs){ return webClient .post() .uri("http://localhost:8080/logs/createEventLog") .bodyValue(logs) .retrieve() .bodyToMono(String.class); }

NOTA: También trato de pasar datos como Objeto, pero no sirve. Los String logs se le proporcionarán desde activeMQ. Los datos que estoy enviando son;

 { "hasError": false, "message": "Hello There", "sender": "Ali Ahmad", "payload": { "type": "String", "title": "Topoic", "description": "This is the demo description of the activemqq" }, "serviceInfo":{ "version": "v1", "date": "2021-05-18T08:44:17.8237608+05:00", "serverStatus": "UP", "serviceName": "IdentityService" } }

La mutación será como;

 mutation($eventLog:EventLogInput){ createEventLog(eventLog: $eventLog){ hasError message payload{ title, description } } }

$eventLog tiene cuerpo json como;

 { "eventLog": { "hasError": false, "message": "Hello There", "sender": "Ali Ahmad", "payload": { "type": "String", "title": "Topoic", "description": "This is the demo description of the activemqq" }, "serviceInfo":{ "version": "v1", "date": "2021-05-18T08:44:17.8237608+05:00", "serverStatus": "UP", "serviceName": "IdentityService" } } }

EDITAR Siga la respuesta a continuación, actualizando el servicio al consumidor como;

 @Component public class Consumer { @Autowired private AuditService auditService; private final String MUTATION_QUERY = "mutation($eventLog: EventLogInput){\n" + "createEventLog(eventLog: $eventLog){\n" + "hasError\n" + "}\n" + "}"; @JmsListener(destination = "Audit.queue") public void consumeLogs(String logs) { Gson gson = new Gson(); Object jsonObject = gson.fromJson(logs, Object.class); Map<String, Object> graphQlBody = new HashMap<>(); graphQlBody.put("query", MUTATION_QUERY); graphQlBody.put("variables", "{eventLog: " + jsonObject+ "}"); auditService.sendLogsToGraphQL(graphQlBody); } }

Ahora se convierte en `sendLogsToGraphQL'.

 public void sendLogsToGraphQL(Map<String, String> logs) { log.info("Logs: {} ", logs); Mono<String> stringMono = webClient .post() .uri("http://localhost:8080/graphql") .bodyValue(BodyInserters.fromValue(logs)) .retrieve() .bodyToMono(String.class); log.info("StringMono: {}", stringMono); return stringMono; }

Los datos no se envían a la capa de graphql con la URL especificada.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Debe enviar la query y el cuerpo como variables en la solicitud posterior como se muestra aquí

 graphQlBody = { "query" : mutation_query, "variables" : { "eventLog" : event_log_json } }

Y luego en webClient puede enviar el cuerpo de varias maneras

 public Mono<String> sendLogsToGraphQL(Map<String,Object> body){ return webClient .post() .uri("http://localhost:8080/logs/createEventLog") .bodyValue(BodyInserters.fromValue(body)) .retrieve() .bodyToMono(String.class); }

Aquí acabo de mostrar el uso de Map<String,Object> para formar el cuerpo de solicitud de graphQL, pero también puede crear clases POJO correspondientes con las propiedades de query y variables

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda