Контроллер в DGS Netflix Graphql

Мы разрабатываем проект Using Spring boot с DGS Netflix graphql. Мы создали все схемы и datafethers, которые абсолютно нормально работают с конечной точкой по умолчанию "/graphql". мы хотели бы предоставить это приложение с настраиваемой конечной точкой, поэтому мы пытаемся добавить контроллер с настраиваемой конечной точкой, как показано ниже. Но когда я запускаю приложение и отправляю запрос, мой сборщик данных вызывается дважды. первый раз вызывается с контроллера, а второй раз я считаю, что из самой структуры. У кого-нибудь есть мысли по этому поводу, почему его вызывают дважды и как этого избежать? Ваша помощь очень ценится. См. Приведенные ниже Datafetcher и Controller.

      Controller:

@RestController
@RequestMapping("/sample-information/model")
@Slf4j
public class CustomController {
    
    @Autowired
    DgsQueryExecutor dgsQueryExecutor;

    
    @PostMapping(consumes = {MediaType.APPLICATION_JSON_VALUE, "application/graphql"})
    public Mono<ResponseEntity<Object>> getDetails(@RequestBody String query,
            @RequestHeader HttpHeaders headers
            ) {
        GraphQLQueryInput inputs = null;
        try {
            inputs = ObjectMapperHelper.objectMapper.readValue(query, GraphQLQueryInput.class);
        } catch (Exception e) {
            log.error("TraceId: {} - Application Error: Error message: Error converting query to GraphQLQueryInput: {} "+ query);
            
        }
        
        if(inputs.getVariables() == null) {
            inputs.setVariables(new HashMap<>());
        }
        
        if(inputs.getOperationName() == null) {
            inputs.setOperationName("");
        }
        
        final String que = inputs.getQuery();
        final Map<String, Object> var = inputs.getVariables();
        final String opn = inputs.getOperationName();
        
        ExecutionInput.Builder executionInput = ExecutionInput.newExecutionInput()
                .query(inputs.getQuery())
                .operationName(inputs.getOperationName())
                .variables(inputs.getVariables());
        
       return Mono.fromCallable(()-> {
            return dgsQueryExecutor.execute(que, var, opn);
        }).subscribeOn(Schedulers.elastic()).map(result -> {
            return new ResponseEntity<>(result, HttpStatus.OK); 
        }); 
    }

}

Datafetcher:

@DgsComponent
@Slf4j
public class SampleDataFetcher {
    @Autowired
    SampleBuilder sampleBuilder;
    
    @DgsData(parentType = DgsConstants.QUERY_TYPE, field = DgsConstants.QUERY.SampleField)
    public CompletableFuture<StoreDirectoryByStateResponse> getStoreDirectoryByState(@InputArgument String state, DataFetchingEnvironment dfe) throws BadRequestException {

        Mono<StoreDirectoryByStateResponse> storeDirectoryResponse = null;
        try {
            sampleResponse = sampleBuilder.buildResponse(modelGraphQLContext);
        } catch (BaseException e) {

        }
        return sampleResponse.map(response -> {
            return response;
        }).toFuture();
        
    }
}

0 ответов

Другие вопросы по тегам