この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

フレンドリー URL を使用したリレーションのトラバース

オブジェクトのリレーション項目をトラバースするには、SObject Relationship リソースを使用して、フレンドリー URL を作成します。この方法では、リレーションに関連付けられたレコードに直接アクセスできます。フレンドリー URL を使用する方が、リレーション項目からオブジェクト ID を取得し、関連付けられたオブジェクト ID レコードを調べて、レコードにアクセスするよりも簡単です。

リレーション名は、リレーションの方向 (親から子または子から親) と関連オブジェクトの名前によって決まる特定の規則に従います。規則については、『SOQL および SOSL リファレンス』「リレーション名について」を参照してください。

1 つの REST API コールで行うことができるリレーションのトラバース数には制限があります。これらの制限は、『SOQL および SOSL リファレンス』「リレーションクエリ制限について」に記載されている SOQL の制限と同じです。リレーションをトラバースする場合は、次の制限に注意してください。
  • 子-親リレーションを指定する場合、5 つ以下のレベルをトラバースできます。次の例では、2 つの子-親リレーションをトラバースします。
  • 親-子リレーションを指定する場合、1 つ以下のレベルをトラバースできます。次の例では、1 つの親-子リレーションをトラバースします。
単純なリレーションをトラバースする場合の例
Merchandise__c という名前のこのカスタムオブジェクトには、子 Distributor__c カスタムオブジェクトへの参照関係項目が含まれています。次の例では、Merchandise__c レコードに関連する Distributor__c レコードを取得します。
単純なリレーションをトラバースする場合のリクエストボディの例
不要
単純なリレーションをトラバースする場合のレスポンスボディの例

リレーション名に関連付けられている関連レコードがない場合、リレーションをトラバースできないため、REST API コールは失敗します。Merchandise__c レコードの Distributor__c 項目が null に設定されている場合、前の例を使用すると、GET コールで 404 エラー応答が返されます。

リレーションクエリの制限を超えない限り、1 つの REST API コールで同じリレーション階層内の複数のリレーションをトラバースできます。Line_Item__c カスタムオブジェクトに Merchandise__c カスタムオブジェクトに対する子リレーションがあり、Merchandise__c に子 Distributor__c カスタムオブジェクトもある場合、次のように Line_Item__c レコードから Distributor__c レコードにアクセスできます。

1 つのレコードに解決されるリレーションをトラバースする場合、PATCH および DELETE メソッドもサポートされます。PATCH メソッドを使用して、関連レコードを更新できます。

PATCH を使用してリレーションレコードを更新する場合の例
update_info.json に含まれているリレーションレコードを更新する場合の JSON リクエストボディの例
リレーションレコードを更新する場合のレスポンスボディの例
戻り値なし

DELETE メソッドを使用して、関連レコードを削除できます。

DELETE を使用してリレーションレコードを削除する場合の例
リレーションレコードを削除する場合のレスポンスボディの例
不要
リレーションレコードを更新する場合のレスポンスボディの例
戻り値なし

複数のレコードのあるリレーションのトラバース

複数のレコードのあるリレーションをトラバースして、一連のレコードを含む応答を取得できます。複数のレコードに解決されるリレーションの場合、GET メソッドのみがサポートされます。

複数のレコードのあるリレーションをトラバースする場合の例
Merchandise__c という名前のカスタムオブジェクトに Line_Item__c カスタムオブジェクトに対する主従関係項目が含まれている場合、次の例では Merchandise__c レコードに関連する一連の Line_Item__c レコードが取得されます。
複数のレコードのあるリレーションをトラバースする場合のリクエストボディの例
不要
複数のレコードのあるリレーションをトラバースする場合のレスポンスボディの例
この例の場合、2 つの Line_Item__c レコードが取得されています。
結果データの逐次化された構造は、REST API を使用して SOQL クエリを実行した結果データと同じ形式です。REST API を使用した SOQL クエリの実行についての詳細は、「Query」を参照してください。

リレーション名に関連付けられている関連レコードがない場合、REST API コールで 200 応答が返され、レスポンスボディにレコードデータはありません。この結果は、1 つのレコードに対する空のリレーションをトラバースした場合の結果 (404 エラー応答が返される) とは異なります。1 つのレコードの場合、PATCH または DELETE メソッドで使用できる REST リソースに解決されるため、この動作が発生します。一方、複数のレコードの場合は照会することしかできません。

複数のレコードのあるリレーションの最初の GET 要求クエリで結果の一部のみが返される場合、応答の最後に nextRecordsUrl という項目が含まれます。たとえば、応答の最後で次のような項目が取得されます。

インスタンスおよびセッション情報と共に提供された URL を使用してレコードの次のバッチを要求し、すべてのレコードが取得されるまでこの操作を繰り返すことができます。これらの要求では nextRecordsUrl が使用され、パラメータは含まれません。レコードの最後のバッチには nextRecordsUrl 項目が含まれます。

残りの結果を取得する場合の使用例
残りの結果を取得する場合のリクエストボディの例
不要
残りの結果を取得する場合のレスポンスボディの例

結果項目の絞り込み

リレーションのトラバースでレコードを取得する場合、必要に応じて fields パラメータを使用して、レコード項目のサブセットのみが返されるように指定できます。複数の項目はカンマで区切られます。次の例では、Merchandise__c レコードに関連付けられた Distributor__c レコードから Location__c 項目のみを取得します。
JSON 応答データは、次のようになります。
同様に、複数のレコードになる要求の場合、項目のリストを使用して、レコードセットで返される項目を指定できます。たとえば、2 つの Line_Item__c レコードに関連付けられたリレーションがあるとします。これらのレコードから Name 項目と Units_Sold__c 項目のみを取得する場合、次のコールを使用できます。
応答データは、次のようになります。

項目パラメータセットにリストされている項目が有効なユーザに表示されない場合、REST API コールは失敗します。前の例では、Units_Sold_c 項目が項目レベルセキュリティで有効なユーザに表示されない場合、コールで 400 エラー応答が返されます。