
本文介绍了如何在 Quarkus 中使用 SmallRye GraphQL 来自定义错误消息。默认情况下,RuntimeException 的消息可能不会直接显示在 GraphQL 响应中。通过配置 Quarkus 属性,您可以启用 RuntimeException 消息的显示,并指定要包含在错误扩展中的字段,从而实现更精细的错误处理和更友好的用户体验。
默认情况下,SmallRye GraphQL 可能不会直接显示 RuntimeException 的消息。为了使自定义异常中的 getMessage() 方法生效,需要在 application.properties 文件中进行配置。
添加以下配置项,以启用 RuntimeException 消息的显示:
quarkus.smallrye-graphql.show-runtime-exception-message=true
这个配置会告诉 SmallRye GraphQL 显示 RuntimeException 及其子类的消息内容。
除了显示消息之外,您还可以配置要包含在错误扩展中的字段。这允许您在 GraphQL 响应中提供更详细的错误信息。
例如,如果您想将 SomeException 中的 someErrors 列表包含在错误扩展中,可以在 application.properties 中添加以下配置:
quarkus.smallrye-graphql.error-extension-fields=someErrors
这个配置告诉 SmallRye GraphQL 将 SomeException 类中名为 someErrors 的字段添加到错误响应的 extensions 部分。请注意,这里假设你的Exception类中存在一个名为someErrors的public字段或者存在对应的getter方法getSomeErrors()。
下面是一个完整的示例,展示了如何自定义异常以及如何在 Quarkus 中配置 SmallRye GraphQL 来显示自定义错误消息和扩展字段。
首先,定义一个自定义异常类:
import graphql.ErrorClassification;
import graphql.GraphQLError;
import graphql.language.SourceLocation;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class SomeException extends RuntimeException implements GraphQLError {
private List<String> someErrors;
private String errorMessage;
public SomeException(String message, List<String> someErrors) {
this.errorMessage = message;
this.someErrors = someErrors;
}
@Override
public String getMessage() {
return this.errorMessage;
}
@Override
public ErrorClassification getErrorType() {
return null;
}
@Override
public Map<String, Object> getExtensions() {
return Collections.singletonMap("someErrors", someErrors);
}
@Override
public List<SourceLocation> getLocations() {
return null;
}
}然后,在 GraphQL resolver 中抛出这个异常:
import jakarta.inject.Inject;
import org.eclipse.microprofile.graphql.GraphQLApi;
import org.eclipse.microprofile.graphql.Query;
import java.util.Arrays;
import java.util.List;
@GraphQLApi
public class MyGraphQLApi {
@Query
public String something() {
List<String> errors = Arrays.asList("Error 1", "Error 2");
throw new SomeException("Custom error message", errors);
}
}最后,在 application.properties 中添加以下配置:
quarkus.smallrye-graphql.show-runtime-exception-message=true quarkus.smallrye-graphql.error-extension-fields=someErrors
通过配置 Quarkus 属性,您可以轻松地自定义 SmallRye GraphQL 中的错误消息和扩展字段。这使得您可以提供更详细、更友好的错误信息,从而改善 GraphQL API 的用户体验。记住启用 RuntimeException 消息的显示,并根据需要配置错误扩展字段,以便在 GraphQL 响应中包含自定义错误信息。
以上就是自定义 SmallRye GraphQL 错误消息 (Quarkus)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号