You*_*ker 3 spring kotlin spring-boot graphql
当使用Spring引导程序启动graphql时,数据获取时抛出的所有异常在输出控制台中显示为"执行查询时的内部服务器错误"我希望我抛出的e.message()字符串只是GraphQLException从"消息"是Graphql中错误字段的一部分,这样这个API的前端就可以看出出了什么问题.
我用google搜索无济于事.大多数人通过编辑Servlet来暴露错误,但由于我使用的是Spring Boot启动程序,因此无法轻松完成.我知道graphql-servlet启动器使用的类有一个名为DefaultGraphQLErrorHandlerfind here的类,但我不知道如何覆盖或更改它,或者只是以某种方式显示这些错误.
我尝试重写SimpleDataFetcherExceptionHandlerin graphql,创建一个覆盖GraphQlException的CustomException但是都没有工作,SimpleDataFetcherExceptionHandler在调试期间从未调用过实现.
我只看到这个:
谢谢
所以我想出来了.我必须提供a的自定义实现,GraphQLErrorHandler 并通过标记为a将其添加到bean列表中@Component.然后我processErrors()在错误处理程序中覆盖了该函数.当标记为组件时,此bean自动装入graphql spring boot starter包中的graphql serverlet配置器中,替换默认值.
在CustomGraphQlErrorHandler加入我如下所示:
import graphql.GraphQLError
import graphql.servlet.GenericGraphQLError
import graphql.servlet.GraphQLErrorHandler
import org.springframework.stereotype.Component
@Component
class CustomGraphQlErrorHandler: GraphQLErrorHandler {
override fun processErrors(errors: MutableList<GraphQLError>?): MutableList<GraphQLError> {
val errorList = mutableListOf<GraphQLError>()
for(error in errors!!){
errorList.add(GenericGraphQLError(error.message))
}
return errorList
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
SimpleDataFetcherExceptionHandler当您graphql.servlet.exception-handlers-enabled=true进入时将调用实现application.properties
| 归档时间: |
|
| 查看次数: |
1050 次 |
| 最近记录: |