DGS 框架支持与 data fetcher 同样的构造器来支持 Mutations,使用 @DgsData 注解。下面是一个 mutation 简单的样例:
type Mutation {
addRating(title: String, stars: Int):Rating
}
type Rating {
avgStars: Float
}
@DgsComponent
public class RatingMutation {
@DgsData(parentType = "Mutation", field = "addRating")
public Rating addRating(DataFetchingEnvironment dataFetchingEnvironment) {
int stars = dataFetchingEnvironment.getArgument("stars");
if(stars < 1) {
throw new IllegalArgumentException("Stars must be 1-5");
}
String title = dataFetchingEnvironment.getArgument("title");
System.out.println("Rated " + title + " with " + stars + " stars") ;
return new Rating(stars);
}
}
注意上面的代码,通过调用 DataFetchingEnvironment.getArgument 方法为 Mutation 获取输入数据,正如在 data fetcher 使用的那样。