Je ne pouvais pas l'obtenir avec @ RestControllerAdvice
, et je voulais des informations un peu plus détaillées que @ ExceptionHandler
.
val spring_version=2.2.2.RELEASE
implementation("com.graphql-java-kickstart:graphql-spring-boot-starter:6.0.0")
implementation("org.springframework.boot:spring-boot-starter:$spring_version")
implementation("org.springframework.boot:spring-boot-starter-web:$spring_version")
Il semble bon d'enregistrer Map <String, ExecutionStrategy>
dans le bean.
@Configuration
class GraphQLConfig {
@Bean
fun executionStrategies(): Map<String, ExecutionStrategy> {
val customDataFetcherExceptionHandler = CustomDataFetcherExceptionHandler
return mapOf(
"queryExecutionStrategy" to AsyncExecutionStrategy(customDataFetcherExceptionHandler),
"mutationExecutionStrategy" to AsyncSerialExecutionStrategy(customDataFetcherExceptionHandler)
)
}
class CustomDataFetcherExceptionHandler: SimpleDataFetcherExceptionHandler() {
override fun onException(handlerParameters: DataFetcherExceptionHandlerParameters): DataFetcherExceptionHandlerResult {
//Prévenez-moi gentiment
//Si vous voulez des informations de niveau inférieur
// handlerParameters.dataFetchingEnvironment.getContext<GraphQLServletContext>().Il semble que vous puissiez l'obtenir avec httpServletRequest.
return super.onException(handlerParameters)
}
}
}
Je ne suis toujours pas sûr si ʻAsyncExecutionStrategy et ʻAsyncSerialExecutionStrategy
sont corrects, mais pour l'instant, vous pouvez passer l'erreur à quelque chose comme slack.
Veuillez commenter s'il existe un meilleur moyen.