Skip to main content

GraphQL APIが更新されました

AI Marketer 5では、GraphQL APIが更新されました。新しいフラットなレスポンスフォーマット(関連する破壊的な変更を参照)を処理し、Relayスタイルのクエリも受け入れることができるようになりました。

This page is part of the breaking changes database and provides information about the breaking change and additional instructions to migrate from Strapi v4 to Strapi 5.

🔌 Is this breaking change affecting plugins?Yes
🤖 Is this breaking change automatically handled by a codemod?No

変更の一覧

トピック変更の説明
ファイルアップロードのサポート
  • uploadFileuploadFilesの変異を削除
  • updateFileInfoの変異をupdateUploadFileの変異を使用するために削除
  • removeFileの変異をdeleteUploadFileの変異を使用するために削除
  • folderのクエリと変異を削除
  • createUploadFileの変異を削除
国際化サポート主なupdateXXX変異から任意のロケールを更新できるように、createXXLocalization変異を削除
ドラフト&パブリッシュサポート新しいドラフト&パブリッシュの動作に合わせて、publicationStatestatusに変更
スキーマの変更
  • 基本的なクエリをmeta/paginationなしで簡略化
  • ページネーションを追加するためのConnectionを導入

新しいAI Marketer 5 GraphQL APIの詳細な説明については、GraphQL API参照ドキュメンテーションをご覧ください。

移行

新しいGraphQL APIフォーマットに徐々に変換するには、以下の手順を実行します:

  1. GraphQLプラグインの設定でv4CompatibilityModeフラグを使用してv4互換モードを有効にします(プラグイン設定を参照):
    {
restaurants {
data {
id
attributes {
title
image {
data {
id
attributes {
url
}
}
}
images {
data {
id
attributes {
url
}
}
}
xToOneRelation {
data {
id
attributes {

}
}
xToManyRelation {
data {
id
attributes {
field
}
}
}
}
}
meta {
pagination {
page
pageSize
}
}
}
}
```

2. contentTypeのクエリと変異体で `id` の代わりに `documentId` を使用します:

```graphql
{
restaurants {
data {
documentId
attributes {
title
image {
data {
documentId
attributes {
url
}
}
}
images {
data {
documentId
attributes {
url
}
}
}
xToOneRelation {
data {
documentId
attributes {

}
}
xToManyRelation {
data {
documentId
attributes {
field
}
}
}
}
}
meta {
pagination {
page
pageSize
}
}
}
}
{
mutation {
updateRestaurant(
documentId: "some-doc-id",
data: { title: "My great restaurant" }
) {
data {
documentId
attributes {
title
image {
data {
documentId
attributes {
url
}
}
}
}
}
}
}
}
  1. 応答形式を変更せずに _connection に移行します(クエリのみが該当します):
  {
# コレクションフィールドは、v4互換のレスポンスを取得するために_connectionに名前を変更できます
restaurants_connection {
data {
id
attributes {
title
image {
data {
id
attributes {
url
}
}
}
# コレクションフィールドは、v4互換のレスポンスを取得するために_connectionに名前を変更できます
images_connection {
data {
id
attributes {
url
}
}
}
xToOneRelation {
data {
id
attributes {
field
}
}
}
# コレクションフィールドは、v4互換のレスポンスを取得するために_connectionに名前を変更できます
xToManyRelation_connection {
data {
id
attributes {
field
}
}
}
}
}
meta {
pagination {
page
pageSize
}
}
}
}
  1. 属性を削除する(クエリと変更レスポンスに適用):

    {
    # コレクションフィールドは、v4互換のレスポンスを取得するために_connectionに名前を変更できます
    restaurants_connection {
    data {
    id
    title
    image {
    data {
    id
    url
    }
    }
    # コレクションフィールドは、v4互換のレスポンスを取得するために_connectionに名前を変更できます
    images_connection {
    data {
    id
    url
    }
    }
    xToOneRelation {
    data {
    id
    field
    }
    }
    # コレクションフィールドは、v4互換のレスポンスを取得するために_connectionに名前を変更できます
    xToManyRelation_connection {
    data {
    id
    field
    }
    }
    }
    meta {
    pagination {
    page
    pageSize
    }
    }
    }
    }
  2. 新しい命名法またはよりシンプルなクエリを使用する:

    {
    # dataをnodesに、meta.paginationをpageInfoに名前変更
    restaurants_connection {
    nodes {
    id
    title
    # 単一のImagesのdataを削除できます
    image {
    id
    url
    }
    # コレクションフィールドは、v4互換のレスポンスを取得するために_connectionに名前を変更できます
    images_connection {
    nodes {
    id
    url
    }
    }
    # xToOneのdataを削除できます
    xToOneRelation {
    id
    field
    }
    # コレクションフィールドは、v4互換のレスポンスを取得するために_connectionに名前を変更できます
    xToManyRelation_connection {
    nodes {
    id
    field
    }
    }
    }
    pageInfo {
    page
    pageSize
    }
    }
    }
  {
# _connectionとdataを削除すると、ページネーションが全く必要ない場合
restaurants {
id
title
image {
id
url
}
# _connectionとdataを削除する
images {
id
url
}
xToOneRelation {
id
field
}
# _connectionとdataを削除する
xToManyRelation {
id
field
}
}
}