web-dev-qa-db-ja.com

JSON APIを使用して段落にアクセスするにはどうすればよいですか?

JSON APIモジュールを使用して、段落にアクセスしようとしています。 JSONオブジェクトでは、ネストされた段落にアクセスできません。

JSON APIを使用して段落にアクセスするにはどうすればよいですか?

*****ソリューションで更新*****

  1. 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

  2. 正しいAPI呼び出しを取得したら、Drupal管理ダッシュボードに移動し、people/permissionsに移動し、Paragraphs Type Permissionsセクションの下で、view contentへのアクセスをユーザーに希望する特定の段落に付与する必要がありますアクセスするために。

2
Che Figueroa

必要な2つのステップ:)

  1. POSTリクエストを実行し、作成された段落のリビジョンIDを受け取って、段落を作成します。
  2. 段落のリビジョンIDを段落フィールド(エンティティリビジョン参照フィールド)に割り当てて、親エンティティを更新します。

ステップ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。これで十分に機能します。それ以外の場合はコメントして更新できます。

2
LittleTiger

http://yourhost.local/jsonapi/paragraph/myparagraph を使用してみてください

ブラウザから移動できます http://yourhost.local/jsonapi

0
Zarpele