Jak zbudować dane JSON z informacjami o sesji w celu utworzenia węzła?

11

Korzystam z Drupal 7 i modułu Usługi 7.x-3.2. Korzystam z Postman for Chrome (klient http) do testowania interfejsu API.

Chcę zalogować się do użytkownika i utworzyć z nim węzeł za pomocą interfejsu API usługi Drupal.

Zalogowałem użytkownika za pomocą żądania JSON POST na stronie http://example.com/api/user/login .

wprowadź opis zdjęcia tutaj

Z powodzeniem uzyskałem wynik JSON.

{
    "sessid": "KrZjlcY3rFr8v6iLoskcVQN9DmDWsg5yZqIjBeydEBY",
    "session_name": "SESS9fe39db36ccd7afd64e034fefa0129e1",
    "user": {
        "uid": "31",
        "name": "test_user",
        "mail": "[email protected]",
        "theme": "",
        "signature": "",
        "signature_format": "filtered_html",
        "created": "1352985941",
        "access": "1352991170",
        "login": 1352991510,
        "status": "1",
        "timezone": "",
        "language": "",
        "picture": null,
        "init": "[email protected]",
        "data": false,
        "roles": {
            "2": "authenticated user"
        },
        "rdf_mapping": {
            "rdftype": [
                "sioc:UserAccount"
            ],
            "name": {
                "predicates": [
                    "foaf:name"
                ]
            },
            "homepage": {
                "predicates": [
                    "foaf:page"
                ],
                "type": "rel"
            }
        }
    }
}

Następnie próbowałem utworzyć artykuł za pośrednictwem interfejsu API, wysyłając żądanie JSON POST. (Użytkownik ma uprawnienia do tworzenia węzłów artykułów ).

wprowadź opis zdjęcia tutaj

Otrzymałem 401 nieautoryzowaną odpowiedź.

Chyba muszę podać informacje o pliku cookie sesji, aby wysłać żądanie POST, aby utworzyć węzeł.

Mam wcześniej zwrócone informacje o sesji.

"sessid": "KrZjlcY3rFr8v6iLoskcVQN9DmDWsg5yZqIjBeydEBY",
"session_name": "SESS9fe39db36ccd7afd64e034fefa0129e1",

Jak mogę go wykorzystać, aby pomyślnie utworzyć żądanie JSON POST dotyczące utworzenia węzła?

gilzero
źródło

Odpowiedzi:

2
{
   "title": "Just another drupal Post",
   "type": "Article"
}

nie zauważaj przecinka po znaczniku type: article, aby twój json działał.

Sunny Patel
źródło
2

Mam nadzieję, że to ci pomoże

  • Aby wysyłać żądania HTTP, korzystam z dodatku POSTER do przeglądarki Firefox .

    wprowadź opis zdjęcia tutaj

    {
      "type" : "article",
      "title" : "Test article with language",
      "language" : "und"
    }
  • Jeśli węzeł zostanie utworzony pomyślnie, otrzymasz odpowiedź z linkiem.

    wprowadź opis zdjęcia tutaj

  • Przykłady

    {
      "type": "article",
      "title": "Test article",
      "body": { 
        "und": [{ 
          "value": "test body!"
         }]
      },
      "language" : "und"
    }
    {
       "title":"Review",
       "type":"establishment_review",
       "field_establishment":[
          {
             "nid":{
                "nid":"[nid:26686]"
             }
          }
       ],
       "field_fivestar_value":[
          {
             "rating":"20",
             "target":"0"
          }
       ],
       "field_review":[
          {
             "value":"comments about the restaurant"
          }
       ]
    }
    

  • Można odnieść to

  • Odpowiedziałem: W jaki sposób mogę POST wysłać nowy węzeł za pomocą pytania modułu Usługi? Możesz uzyskać więcej informacji.

inizio
źródło
-1

Musisz ustawić cookie="sessionname=sessionid"wartość w nagłówkach, gdzie nazwa sesji pochodzi z punktu końcowego / użytkownika / adresu URL logowania.

Gholave ​​Ranjeett Vijaykumar
źródło