Drupal 8 REST
am 10.10.2015 - 09:41 Uhr in
Hallo Forum,
mir lässt das einfach keine Ruhe, ich scheine mich echt zu dämlich anzustellen oder etwas nicht zu raffen. Ich möchte gerne die Rest-API von D8 verwenden, dabei kommt momentan die Version Drupal 8 RC1 zum Einsatz.
Folgendes habe ich bereits gemacht:
Schritt 1: die Core-Module HAL, HTTP Basic Authentication, RESTful Web Services und Serialization, sowie zusätzlich REST UI installiert.
Schritt 2: neben dem Admin auch angemeldeten Usern (es handelt sich um eine lokale Installation) die Rechte für POST, DELETE, PATCH und GET gegeben.
Schritt 3: über die REST UI für alle vier Operationen auch die JSON-Unterstützung aktiviert
Schritt 4: GET getestet (DHC und HTTP-Requester verwendet)
URL=> http://localhost/d8rc1/node/1?_format=json
zusätzliche die Werte für die Authorization eingegeben, also Username und Passwort
Response:
{
"nid": [
{
"value": "1"
}
],
"uuid": [
{
"value": "664dd492-8a8e-4663-8e15-21b3a7d34485"
}
],
"vid": [
{
"value": "1"
}
],
"type": [
{
"target_id": "article"
}
],
"langcode": [
{
"value": "en"
}
],
"title": [
{
"value": "Datensatznummer 1"
}
],
"uid": [
{
"target_id": "1",
"url": "/user/1"
}
],
"status": [
{
"value": "1"
}
],
"created": [
{
"value": "1444406509"
}
],
"changed": [
{
"value": "1444406538"
}
],
"promote": [
{
"value": "1"
}
],
"sticky": [
{
"value": "0"
}
],
"revision_timestamp": [
{
"value": "1444406538"
}
],
"revision_uid": [
{
"target_id": "1",
"url": "/user/1"
}
],
"revision_log": [
],
"revision_translation_affected": [
{
"value": "1"
}
],
"default_langcode": [
{
"value": "1"
}
],
"path": [
],
"body": [
{
"value": "<p>Dies ist ein Beispielnode um die Funktionalität zu prüfen.</p>\r\n",
"format": "basic_html",
"summary": ""
}
],
"comment": [
{
"status": "2",
"cid": "0",
"last_comment_timestamp": "1444406538",
"last_comment_name": null,
}
],
"field_image": [
],
"field_tags": [
{
"target_id": "1",
"url": "/taxonomy/term/1"
}
]
}
Schritt 5a: POST-Request zum Hinzufügen von Inhalten, dazu müssen wir uns erst einloggen um einen Session-Token zu erhalten:
URL => http://localhost/d8rc1/rest/session/token
Einstellung => Content-Type application/json
Request =>
{
"username":"myusername",
"password":"mypassword"
}
Response =>
RMyED7kg90mSwl_aLtDV0fG8pIbxifa5n1lKBrPINew
Mit diesem Session-Token arbeite ich dann weiter, jedoch bekomme ich auch einen Session-Token, wenn Passwort und Benutzername falsch sind.
Schritt 5b:
URL => http://localhost/d8rc1/entity/node
Einstellungen: Content-Type application/json
Accept application/json
X-CSRF-Token RMyED7kg90mSwl_aLtDV0fG8pIbxifa5n1lKBrPINew (hier natürlich den erhaltenen Sessiontoken einsetzen)
Authorization Benutzername/Passwort
Request:
{
"title": [
{
"value": "TESTE NODE"
}
],
"type": [
{
"value": "article"
}
],
"_links": {
"type": {
"href": "http://localhost/d8rc1/type/node/article" //eventuell ist hier ein Fehler
}
}
}
Als Response erhalte ich leider immer einen 400 Bad Request Fehler mit der Mitteilung
{
"error": "A string must be provided as a bundle value."
}
Für Anregungen und Tipps bin ich euch sehr Dankbar, ich weiß leider nicht mehr an welcher Stelle ich noch etwas abändern könnte.
mit bestem Dank für die Hilfe
Jenne
- Anmelden oder Registrieren um Kommentare zu schreiben
Schau mal
am 10.11.2015 - 02:49 Uhr
Schau mal hier:
https://www.drupal.org/node/2472451
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
bin mir nicht sicher,
am 10.11.2015 - 09:09 Uhr
habe mit drupal 8 noch nicht rumgefummelt, aber
{
"title": [
{
"value": "TESTE NODE"
}
],
"type": [
{
"value": "article"
}
],
"_links": {
"type": {
"href": "http://localhost/d8rc1/type/node/article" //eventuell ist hier ein Fehler
}
}
}
Warum steht bei deinem Fehlerverdacht der String nicht in Klammern, sozusagen als bundled value?
Ist aber geraten! Fange jetzt erst damit an.
Danke,
am 10.11.2015 - 18:50 Uhr
ich verstehe nicht genau was du meinst, aber wenn ich
{
"title": [
{
"value": "TESTE NODE"
}
],
"type": [
{
"value": "article"
}
],
"_links": {
"type": {
("href": "http://localhost/d8rc1/type/node/article") //eventuell ist hier ein Fehler
}
}
}
erhalte ich lediglich:
{
"error": "quoted object property name expected"
}
Ich habe hiermit aber noch kaum Erfahrungen und weiß nicht wie das aussehen soll und unter JSON bundle value habe ich keine passende Antwort ergoogelt.
statt
am 10.11.2015 - 19:02 Uhr
"_links": {
"type": {
("href": "http://localhost/d8rc1/type/node/article") //eventuell ist hier ein Fehler
}
}
wohl eher:
"_links": [
"type": {
"href": "http://localhost/d8rc1/type/node/article" //eventuell ist hier ein Fehler
}
]
oder:
"_links": [
{
"type": {
"href": "http://localhost/d8rc1/type/node/article" //eventuell ist hier ein Fehler
}
}
]
oder:
"_links": [
{
"type": [ {
"href": "http://localhost/d8rc1/type/node/article" //eventuell ist hier ein Fehler
}]
}
]
Hi, vielen Dank, doch leider
am 11.11.2015 - 18:47 Uhr
Hi, vielen Dank, doch leider klappt das immer noch nicht, ich bekomme jetzt jedoch den Fehler:
{
"error": "object value separator ',' expected"
}
Ohne zu wissen bei welcher Alternative
am 11.11.2015 - 19:48 Uhr
aber ich denke dann klopp mal ein ',' hinter dieselbige!???
Folgende Fehlermeldungen
am 13.11.2015 - 17:31 Uhr
Folgende Fehlermeldungen erhalte ich:
Variante A:
"_links": [
{
"type": {[
"href": "http://localhost/d8rc3/type/node/article"
]}
}
]
Fehlermeldung:
{
"error": "quoted object property name expected"
}
Variante B:
"_links": {
"type": {
"href": "http://localhost/d8rc1/type/node/article"
}
}
Fehler:
{
"error": "A string must be provided as a bundle value."
}
Variante C:
"_links": [
"type": {
"href": "http://localhost/d8rc1/type/node/article"
}
]
Fehlermeldung:
{
"error": "array value separator ',' expected"
}
Variante C2:
"_links": [
"type": {
"href": "http://localhost/d8rc1/type/node/article", //Mit allen Kombinationen der Kommapositionierung ausprobiert
},
],
Fehlermeldung:
{
"error": "array value separator ',' expected"
}
Variante D
"_links": [
{
"type": {
"href": "http://localhost/d8rc1/type/node/article" //eventuell ist hier ein Fehler
}
}
]
Fehlermeldung:
{
"error": "A string must be provided as a bundle value."
}
Variante E
"_links": [
{
"type": [ {
"href": "http://localhost/d8rc1/type/node/article" //eventuell ist hier ein Fehler
}]
}
]
Fehlermeldung:
{
"error": "A string must be provided as a bundle value."
}
Ich bin leider mit meinem Latein am Ende.
Hi,ich weiss nicht wie Du
am 14.11.2015 - 09:26 Uhr
Hi,
ich weiss nicht wie Du darauf kommst:
"_links": {
"type": {
"href": "http://localhost/d8rc1/type/node/article" //eventuell ist hier ein Fehler
}
}
Im node hat es sicher kein Feld Names _link !
Du musst, wenn schon ein solches Feld erstellen und dann:
"field_link": [
{
"value": "http://yyy.com."
}
],
Gruss
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hi Robert, ich habe das ganze
am 14.11.2015 - 20:09 Uhr
Hi Robert,
ich habe das ganze auch nur aus dem oben genannten Link, ich dachte dass das eine Art path-alias sein kann. Ich habe das "_links" einfach entfernt:
{
"title": [
{
"value": "TESTE NODE"
}
],
"type": [
{
"value": "article"
}
]
}
und anschließend erhalte ich wieder den Fehler:
{
"error": "A string must be provided as a bundle value."
}
mit bestem Gruß
Jenne
Ich bin bei der Fehlersuche
am 02.12.2016 - 14:49 Uhr
Ich bin bei der Fehlersuche gerade auf den Beitrag hier gestoßen. Da er nicht beantwortet wurde, will ich das (vielleicht) hiermit tun:
Es darf bei "type" nicht "value" heißen, sondern "target_id".
"type": [
{
"target_id": "article",
}
]