在我的GraphQL模式中,我在后端的myMutation
中指定了一个schema.graphql
方案:
type Mutation {
myMutation(request: MyMutationRequest): MyMutationResponse
}
input MyMutationRequest {
requestFoo: String
requestBar: String
}
type MyMutationResponse {
responseFoo: String
responseBar: String
}
并使用Java实现它们各自的类:
@Builder
@Getter
public class MyMutationRequest {
@NonNull private String requestFoo;
@NonNull private String requestBar;
}
(注意:myMutation
是从React前端发送的。)
在集成测试中,我正在尝试为请求构建JSON字符串,如下所示:
mutation {
myMutation(request:{
requestFoo: "Some request foo value"
requestBar: "Some request bar value"
}) {
responseFoo
responseBar
}
}
虽然可以执行一系列字符串连接或String.format()
,但必须在架构更改时随时对其进行更新,并且语法不是最干净的:
return "mutation {\n"
+ " myMutation(request:{\n"
+ " requestFoo: \"" + someFooValue + "\"\n"
+ " requestBar: \"" + someBarValue + "\"\n"
+ " }) {\n"
+ " responseFoo\n"
+ " responseBar\n"
+ " }\n"
+ " }";
(此外,实际的请求类包含一些列表和对作为其字段,因此有点难以阅读。)
是否已经有了可以进行此转换的库?我已经尝试过JSONObject.toString()
,但是它在字段名周围留下了引号。