Migration 在GraphQL中触发任务的惯用方法

Migration 在GraphQL中触发任务的惯用方法,migration,graphql,Migration,Graphql,在REST API中,您可能有如下端点: /触发工作/ 返回: {'ok':True,'message':'runcomplete'} 在GraphQL中,可以使用以下内容: mutation runJob($job: Int) { triggerJob(jobID: $job) { ok message } } 表示相同的任务。这是一种使用GraphQL进行命令和控制的惯用方法,还是有一种不同的方法来迁移非基于模式的端点?在GraphQL中,我们有一些

在REST API中,您可能有如下端点:

/触发工作/

返回:

{'ok':True,'message':'runcomplete'}

在GraphQL中,可以使用以下内容:

mutation runJob($job: Int) {
   triggerJob(jobID: $job) {
       ok
       message
   }
}

表示相同的任务。这是一种使用GraphQL进行命令和控制的惯用方法,还是有一种不同的方法来迁移非基于模式的端点?

在GraphQL中,我们有一些查询,这些查询应该没有写副作用,并且从HTTP请求所用的词的意义上说,它们是幂等的。对于改变服务器状态的操作,我们必须使用变异。他们可能更接近于休息,因此在他们所代表的事物上更灵活。我经常把突变看作是功能

事实上,我认为您的REST示例不是惯用的,因为您试图触发一个动作,而REST字面上的代表性状态转移只允许您转移状态。所以,是的,我认为你的方式非常地道,因为我不认为你可以在这里用GraphQL做很多错事。GraphQL在这方面的观点并不强烈

架构设计中的两件小事:如果可用的作业量很小,您可能会考虑使用枚举来选择作业而不是int。这允许开发人员知道哪些作业是可用的,而不必查看数据库。如果这是一个好的设计,那么它实际上取决于系统中的作业,但它可能值得考虑。此外,变异通常会允许您使用结果类型上的字段获取更改后的状态。我不确定这在你的情况下是否可行