在 GraphQL Mutation 中,在同一次 HTTP 请求中,执行多个 Mutation 的实现

1、在 GraphQL Mutation 中,在同一次 HTTP 请求中,现在仅执行了一个 Mutation。如图1

图1

mutation UploadThemeAsset($input: ThemeAssetUploadInput!) {
 onlineStoreThemeAssetUpload(input: $input) {
  themeAsset {
   id
   themeId
   value
   key
   publicUrl
   mimeType
   checksum
   category
   warnings
   createdAt
   updatable
   deletable
   renameable
   updatable
  }
 }
}
{
 "input": {
  "themeId": "{{themeId}}",
  "key": "assets/js/1.js",
  "value": "string"
 }
}
{
  "data": {
    "onlineStoreThemeAssetUpload": {
      "themeAsset": {
        "id": "346186",
        "themeId": "98ad1110-014d-4a61-bbb4-d74bc4ed30f7",
        "value": "string",
        "key": "assets/js/1.js",
        "publicUrl": null,
        "mimeType": "text/plain",
        "checksum": "ecb252044b5ea0f679ee78ec1a12904739e2904d",
        "category": "asset",
        "warnings": [],
        "createdAt": "2023-03-14 17:36:36",
        "updatable": false,
        "deletable": false,
        "renameable": false
      }
    }
  }
}

2、当单位时间内 HTTP 请求数量过多时,会触发接口的限流。如图2

图2

3、计划在同一次 HTTP 请求中,执行多个 Mutation。参考:https://graphql.cn/learn/queries/#aliases ,使用别名。如图3

图3

mutation UploadThemeAsset($input1: ThemeAssetUploadInput!, $input2: ThemeAssetUploadInput!) {
 themeAssetUpload1: onlineStoreThemeAssetUpload(input: $input1) {
  themeAsset {
   ...themeAssetFields
  }
 }
  themeAssetUpload2: onlineStoreThemeAssetUpload(input: $input2) {
  themeAsset {
   ...themeAssetFields
  }
 }
}

fragment themeAssetFields on ThemeAsset {
  id
  themeId
  value
  key
  publicUrl
  mimeType
  checksum
  category
  warnings
  createdAt
  updatable
  deletable
  renameable
  updatable
}

{
 "input1": {
  "themeId": "{{themeId}}",
  "key": "assets/js/1.js",
  "value": "string"
  },
  "input2": {
  "themeId": "{{themeId}}",
  "key": "assets/js/2.js",
  "value": "string"
 }
}
{
  "data": {
    "themeAssetUpload1": {
      "themeAsset": {
        "id": "346186",
        "themeId": "98ad1110-014d-4a61-bbb4-d74bc4ed30f7",
        "value": "string",
        "key": "assets/js/1.js",
        "publicUrl": null,
        "mimeType": "text/plain",
        "checksum": "ecb252044b5ea0f679ee78ec1a12904739e2904d",
        "category": "asset",
        "warnings": [],
        "createdAt": "2023-03-14 17:36:36",
        "updatable": false,
        "deletable": false,
        "renameable": false
      }
    },
    "themeAssetUpload2": {
      "themeAsset": {
        "id": "346187",
        "themeId": "98ad1110-014d-4a61-bbb4-d74bc4ed30f7",
        "value": "string",
        "key": "assets/js/2.js",
        "publicUrl": null,
        "mimeType": "text/plain",
        "checksum": "ecb252044b5ea0f679ee78ec1a12904739e2904d",
        "category": "asset",
        "warnings": [],
        "createdAt": "2023-03-14 18:04:55",
        "updatable": false,
        "deletable": false,
        "renameable": false
      }
    }
  }
}
永夜