亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過注釋向 graphQL java 添加自定義驗證

通過注釋向 graphQL java 添加自定義驗證

飲歌長嘯 2023-10-12 17:10:20
從網上的博客我明白了。默認情況下,將從 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;}當我嘗試添加帶有突變的帖子時,注釋不起作用。請幫忙解決這個問題。
查看完整描述

1 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

這里沒有解析器,所以我不確定你是如何創建的,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


如果這沒有幫助,請提供更多數據。


查看完整回答
反對 回復 2023-10-12
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號