JSON APIモジュールを使用して、段落にアクセスしようとしています。 JSONオブジェクトでは、ネストされた段落にアクセスできません。
JSON APIを使用して段落にアクセスするにはどうすればよいですか?
*****ソリューションで更新*****
API呼び出しでは、正しいURL形式(/jsonapi/{entity_type_id}/{bundle_id}[/{entity_id}]?_format=api_json
)が必要です。ここでの鍵は、これをAPI呼び出しのURLの最後に追加することです:?include={name of paragraph}
。例:/jsonapi/node/page?_format=api_json&include=field_testing_json_api
正しいAPI呼び出しを取得したら、Drupal管理ダッシュボードに移動し、people/permissions
に移動し、Paragraphs Type Permissions
セクションの下で、view content
へのアクセスをユーザーに希望する特定の段落に付与する必要がありますアクセスするために。
必要な2つのステップ:)
ステップ1。
jsonbody = {
'data': {
'type': 'paragraph--study_history',
'attributes': {
'parent_id': localStorage.getItem('uid'),
'parent_type': 'user',
'parent_field_name': 'field_study_history'
},
'relationships': {
'field_school_ref': {
'data': {
'type': 'node--school',
'id': this.reg_selectedUni['id']
}
}
}
}
};
return this.api.apiPost('/jsonapi/paragraph/study_history', {}, jsonbody)
カスタムサービスapi
(ApiService.ts)を使用しています。これには、想像したとおりの機能を実行するapiPost
関数が含まれています。そのため、上記のロジックは独自のコードに簡単に適合できます。 。
さらにフィールドを追加したい場合(たとえば、テキストフィールドは、属性セクションに追加します)。
ステップ2。ユーザーを更新する方法は次のとおりです。パッチを適用して、作成された「学習履歴」の段落を作成します。
const jsonbody = {
'data': {
'type': 'user--user',
'id': uuid,
'relationships': {
'field_study_history': {
'data': [
{
'type': 'paragraph--study_history',
'id': schoolhist_info['data']['id'],
'meta': {
'target_revision_id': schoolhist_info['data']['attributes']['revision_id'],
}
},
{
'type': 'paragraph--study_history',
'id': unihist_info['data']['id'],
'meta': {
'target_revision_id': unihist_info['data']['attributes']['revision_id'],
}
}
]
}
}
}
};
return this.api.apiPatch(this.endpoint.getUsers + '/' + uuid, {}, jsonbody);
どこ this.endpoint.getUsers
は/jsonapi/user/user
。これで十分に機能します。それ以外の場合はコメントして更新できます。
http://yourhost.local/jsonapi/paragraph/myparagraph を使用してみてください
ブラウザから移動できます http://yourhost.local/jsonapi