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 |
|---|
変更の一覧
| トピック | 変更の説明 |
|---|---|
| ファイルアップロードのサポート |
|
| 国際化サポート | 主なupdateXXX変異から任意のロケールを更新できるように、createXXLocalization変異を削除 |
| ドラフト&パブリッシュサポート | 新しいドラフト&パブリッシュの動作に合わせて、publicationStateをstatusに変更 |
| スキーマの変更 |
|
新しいAI Marketer 5 GraphQL APIの詳細な説明については、GraphQL API参照ドキュメンテーションをご覧ください。
移行
新しいGraphQL APIフォーマットに徐々に変換するには、以下の手順を実行します:
- 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
}
}
}
}
}
}
}
}
- 応答形式を変更せずに
_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
}
}
}
}
属性を削除する(クエリと変更レスポンスに適用):
{
# コレクションフィールドは、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
}
}
}
}新しい命名法またはよりシンプルなクエリを使用する:
{
# 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
}
}
}