作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 graphql-spring-boot 库,并使用解析器对象来解析输入查询的值。
下面是一个例子:
@Component
public class BookResolver implements GraphQLQueryResolver {
@Autowired
private BookImpl bookImpl;
@Autowired
private GraphqlValidator validator;
public GetBookOutput getBooks(GetBookQuery getBookQuery) {
validator.validateBookInputQuery(getBookQuery);
GetBookOutput output = bookImpl.getBook(getBookQuery)
return output;
}
}
@Component
public class GraphqlValidator {
private static final String BOOK_NUMBER_REGEX = " *[0-9]+( *, *[0-9]+)* *";
public void validateBookInputQuery(GetBookInputQuery getBookInputQuery) {
String bookNumber = getBookInputQuery.getBookNumber();
if (!isValidValueForRefVal(bookNumber, BOOK_NUMBER_REGEX)) {
throw new GraphqlInvalidFieldException("Input type getBookInputQuery Invalid", "bookNumber", bookNumber);
}
}
}
@SuppressWarnings("serial")
public class GraphqlInvalidFieldException extends RuntimeException implements GraphQLError{
private Map<String, Object> extensions = new HashMap<>();
String message;
public GraphqlInvalidFieldException(String message, String fieldname, String arg) {
//super(message);
this.message = message;
extensions.put(fieldname, arg);
}
@Override
public List<SourceLocation> getLocations() {
return null;
}
@Override
public Map<String, Object> getExtensions() {
return extensions;
}
@Override
public ErrorType getErrorType() {
return null;
}
@Override
public String getMessage() {
return message;
}
}
最佳答案
您的验证器可以在您运行验证时将错误(字段和描述)添加到列表中,然后将其传递到最后的异常中,如果列表不为空则抛出。
关于validation - 使用解析器时如何在graphql-spring-boot中引发多个验证错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51367707/
我是一名优秀的程序员,十分优秀!