it-swarm.com.de

Wie kann ich das vollständige Hauptnavigationsmenü über JSON: API abrufen?

Wie kann ich das komplette Hauptnavigationsmenü über jsonapi abrufen?

Ich habe es versucht:

curl --header 'Accept: application/vnd.api+json' https://cms.example.com/jsonapi/menu/menu/

und

 curl --header 'Accept: application/vnd.api+json' https://cms.example.com/jsonapi/menu/menu/232fc942-51f3-4478-8535-e5dc482a166e

wo 232fc942-51f3-4478-8535-e5dc482a166e ist das id des Hauptnavigationsmenüs, ABER nur die Knoten der ersten Ebene werden zurückgegeben:

{
  "data": {
    "type": "menu--menu",
    "id": "232fc942-51f3-4478-8535-e5dc482a166e",
    "attributes": {
      "label": "Main navigation"
    },
    "links": {
      "self": {
    "href": "https://cms.garanteasy.com/jsonapi/menu/menu/232fc942-51f3-4478-8535-e5dc482a166e"
      }
    }
  },
  "jsonapi": {
    "version": "1.0",
    "meta": {
      "links": {
    "self": {
      "href": "http://jsonapi.org/format/1.0/"
    }
      }
    }
  },
  "links": {
    "self": {
      "href": "https://cms.garanteasy.com/jsonapi/menu/menu/232fc942-51f3-4478-8535-e5dc482a166e"
    }
  }
}
2
lrkwz

Ich habe es nicht zum Laufen mit JSON: API gebracht, es gibt mehrere langjährige Probleme ...

Sie können es jedoch zum Laufen bringen, wenn Sie zusätzlich das Modul REST Menu Tree installieren.

Beachten Sie, dass dies mehrere direkte und indirekte Abhängigkeiten hat:

Es hat eine direkte Abhängigkeit von Menu Normalizer und gemäß dieses Problem müssen Sie diesen Endpunkt dann beispielsweise mit dem Modul REST UI aktivieren - welches wiederum aktiviert das core REST Modul .

Aktivieren Sie dann auf Ihrer Site den Endpunkt über die Rest-Benutzeroberfläche in /admin/config/services/rest.

Anschließend möchten Sie möglicherweise auch jedem erlauben, diesen Endpunkt über /admin/people/permissions#module-rest Abzurufen.

Und schließlich erhalten Sie ein JSON-Array in /entity/menu/main/tree. Oder fragen Sie über /entity/menu/{internal_menu_name}/tree Ein anderes Menü ab.

2
Jannis Hell

Es ist möglich, alle Menüelemente ausschließlich mit der JSON: API abzurufen. Das Hauptproblem besteht darin, dass die Links nicht für Benutzer ohne Administratorrechte verfügbar sind, was wahrscheinlich den Zweck für die meisten Benutzer zunichte macht. Es gibt jedoch einige Patches, die dies ermöglichen:

https://www.drupal.org/project/drupal/issues/2915792

Und um die URL-Eigenschaft hinzuzufügen:

https://www.drupal.org/project/drupal/issues/3066751

Auf diese Weise können Sie diesen Endpunkt erreichen:

/jsonapi/menu_link_content/your-menu-machine-name

Und erhalten Sie ein Standard-JSON: API-Ergebnis.

Schlüssel zum Mitnehmen: Der Zustand von Drupals kopflosem Menüabruf ist miserabel. ????

0
jpschroeder

Es gibt auch das Modul rest_menu_items . Dies hat keine Abhängigkeiten. Sie müssen lediglich den Endpunkt aktivieren. Auf diese Weise können Sie auch angeben, welche Werte Sie möchten, und die Tiefe des Baums angeben.

0
Fabian de Rijk