【问题标题】:Add custom validation via annotation to graphQL java通过注释向graphQL java添加自定义验证
【发布时间】:2023-03-31 23:40:01
【问题描述】:

我从网上的博客了解到。

默认情况下,将从 Java 类型推断标准 GraphQL 类型(String、Integer、Long、Float、Boolean、Enum、List)。此外,它将尊重 @javax.validation.constraints.NotNull 注释关于值的可空性,以及 @GraphQLNonNull

我正在尝试一个可以验证的注释@UUID

@Target(ElementType.FIELD)
@Constraint(validatedBy={})
@Retention(RUNTIME)
@Pattern(regexp="^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$")
public @interface UUID {
    String message() default "{invalid.uuid}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
public class Post {

    public Post() {
    }

    private String id;
    private String title;
    @UUID
    private String category;
    private Author author;

}

当我尝试添加带有突变的帖子时,注释不起作用。请帮忙。

【问题讨论】:

    标签: java graphql graphql-java


    【解决方案1】:

    这里没有解析器,所以我不确定你是如何创建MutationResolver,所以我会举个例子,希望对你有帮助。

    重要的是您需要有@Validated@Valid 注释。

    所以在我的情况下: 架构:

    schema {
        query: Query
        mutation: Mutation
    }
    
    
    type Vehicle {
        id: ID!
        name: String
    }
    
    input VehicleInput {
        name: String
        type: String
    }
    
    type Mutation {
        addVehicle(vehicle: VehicleInput): Vehicle
    }
    

    解析器:

    @Validated
    @Component
    @RequiredArgsConstructor
    public class VehicleMutationResolver implements GraphQLMutationResolver {
    
        public Vehicle addVehicle(@Valid VehicleInput input) {
            return new Vehicle(UUID.randomUUID().toString(), input.getName());
        }
    }
    

    和输入对象:

    @Data
    @ToString
    public class VehicleInput {
    
        private String type;
    
        @Size(min = 3)
        private String name;
    }
    

    因此,如果您提供小于 3 的字符串,您将收到错误 addVehicle.input.name: size must be between 3 and 2147483647

    如果这没有帮助,请提供更多数据。

    【讨论】:

    • 感谢您的回答,但这不是我要找的东西
    • 如何在邮递员中传递车辆有效载荷。请分享一个例子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多