Я пытаюсь создать пользовательское исключение в graphql, но смог изменить только расширения GraphQlError, и я также хочу изменить сообщение об ошибке. Взглянуть,
public class SomeException extends RuntimeException implements GraphQLError {
List<String> someErrors;
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;
}
}
Итак, моя функция getMessage() на самом деле не переопределена, поскольку она все еще показывает это...
{
"errors": [
{
"message": "System error",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"something"
],
"extensions": {
"someErrors": [
"...",
"..."
],
"classification": "DataFetchingException"
}
}
],
"data": {
"saveInstance": null
}
}
это ответ почтальона, когда я вызывал исключение. Итак, я хочу, чтобы пользовательское сообщение было внутри «сообщения».
Если вы используете исключение Runtime, вам необходимо явно включить его, а также указать, какие поля вы хотите показать. Видеть
И
Большой. Именно для безопасности да
Большое спасибо, теперь все работает гладко. Итак, в основном это функция безопасности, чтобы скрыть исключения времени выполнения для прямой отправки сообщений.