似乎根本没有关于如何通过 graphql 客户端使用 Strawberryshake (C#) 进行突变的示例。使用 Strawberryshake Version11.0.0-preview.138、Abstractions and Http v. 10.3.0-preview.12 和 CodeGeneration.CSharp.Analyzers v. 0.0.30,我可以很好地运行示例中的查询。现在我添加了一个突变,但我不知道如何使用它?
我从模式导入(Alarm.graphql)中得到以下信息:
schema {
query: Query
mutation: Mutation
}
type Query {
alarms: [Alarm]
}
type Mutation {
addAlarm(input: AlarmInput): AlarmPayload
}
type AlarmPayload {
alarm: Alarm
}
type Alarm {
id: Int!
handle: Int!
messageId: Int!
message: String
}
input AlarmInput {
id: Int!
handle: Int!
messageId: Int!
message: String
}
查询使用
query getAlarms {
alarms {
message
}
}
很好。对于我添加的突变
mutation writeAlarm {
addAlarm {
alarm {
id
handle
messageId
message
}
}
}
它成功地在构建时生成了很多看起来很合理的类。现在我创建一个到服务器的连接:
var serviceCollection = new ServiceCollection();
serviceCollection.AddHttpClient(
"ConnectorLogGraphQL",
c => c.BaseAddress = new Uri("http://localhost:5000/graphql"));
serviceCollection.AddAlarmClient();
var services = serviceCollection.BuildServiceProvider();
IAlarmClient client = services.GetRequiredService<IAlarmClient>();
客户端是我需要使用的。对于查询,我可以使用:
var result = await client.GetAlarmsAsync();
相似地
var result = await client.WriteAlarmAsync();
编译得很好,但当然它不会做我想做的事。定义了一些 WriteAlarmOperation,我可以将其作为参数传递给 WriteAlarmAsync,但此操作也没有输入字段。有什么东西不见了..?