2

似乎根本没有关于如何通过 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,但此操作也没有输入字段。有什么东西不见了..?

4

0 回答 0