我正在使用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;
}
}
在上面的代码中,我想验证getBookQuery,并在发送给客户端的响应中引发自定义错误。输入的getBookQuery类型包含一个数字字符串。
下面是我如何实现GraphqlValidator类:
@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);
}
}
}
在validateBookInputQuery函数中,我抛出了一个异常,该异常是从GraphQLError实现的:
@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;
}
}
通过这样做,我能够验证单个字段并向客户端发送自定义错误消息。但是,在更复杂的场景中,输入类型GetBookQuery不仅包含bookNumber,还包含bookName和作者。换句话说,输入字段将包含多个需要验证的字段。我希望能够验证所有字段,并将所有错误分组在一起,并一次将它们发送给客户端。有人能帮我吗?
您的验证程序可以在您运行验证时向列表中添加错误(字段和描述),然后将其传递到末尾的异常中,如果列表不是空的,则将抛出该异常。
问题内容: 我有一个已创建的公司类型。在该公司类型的内部,我有一个名为“摘要”的字段。如何在此字段中添加多个索引分析器? 我简要地研究了使用Yakaz插件,但似乎无法与NEST一起使用。 其背后的原因是,有时用户会在查询中搜索带有句点的公司名称,而其他时候则不包括句点。我想在公司名称上使用ngram进行部分匹配,带标点和不带标点。我目前正在使用停用词过滤器来删除标点符号。 摘要字段的属性(具有多个
我想知道在使用CsvRoutines包时,是否有方法检查和验证字段。基本上,如果第一列只有数字,我想处理一行,否则跳过/可能抛出异常。我猜2.7.0中发布的@Validate annotation可以实现这一点。但我想知道,是否有其他方法可以在早期版本(如2.5.9)中实现同样的效果?
我有通过ajax调用存储数据的数组索引。我只想对数组中的一个索引进行验证。这是我的代码。 我只需要验证为 来自前端的数组如下所示
如果ExternalService.Get抛出异常而不是返回mono.error,则无法使其工作。总是建议使用try catch转换为mono/flow或者有没有更好的方法来验证这样的抛出异常?
问题内容: 我有其他人编写的REST api,其中处理请求到特定url的方法接受一堆从路径参数填充的参数。 撰写此文章的人曾经使用过DropWizard,但我以前没有使用它的经验。我的任务是通过将其与db中的值进行比较来验证studentId字段。这将非常简单,但是我被告知要使用自定义验证程序来执行此操作。我对编写注释非常陌生,但经过大量挖掘后,这样编写了注释, 此后,我将注释添加到了要像这样运行
我正在构建一个Spring Boot应用程序,并试图为我将在服务层验证的一些DTO/实体实现自定义验证。基于Spring关于这个问题的文档,我认为一种方法是实现org。springframework。验证。验证程序界面。 作为一个最小、完整、可重复的示例,请考虑以下代码: Spring初始化引导项目 在src/main/java/com中添加了以下代码。实例使用验证: 如果我点击endpoint触