Come posso postare un nuovo nodo?


16

Ho fatto riferimento a molti collegamenti tra cui i seguenti:

Ho provato diversi modi per inviare un nuovo nodo a un sito Drupal, ma non ci sono riuscito. Ho creato un CCK di esempio per l'archiviazione dei dati degli studenti con nome, età, sesso, DOB e ho aggiunto un elenco.

Ho installato e configurato il modulo Servizi (D7) e creato un endpoint di servizio presso i servizi.
Come previsto, GET è il modo più semplice per ottenere i dettagli di un nodo in JSON. http://localhost/drupal/services/nodeelencato semplicemente tutti i nodi.

Non riesco ancora a capire come usare il metodo POST .

  1. Vorrei cercare gli studenti il ​​cui nome contiene John . Ci ho provato localhost/drupal/services/node&node[name]=john. Ho usato il plugin POST Man per Chrome senza successo. Ho anche provato altri modi.

  2. Ho provato ad aggiungere un nuovo studente al sito senza successo.

Qualcuno può guidarmi per far funzionare bene quanto sopra?

AGGIORNARE :

Ho provato ad aggiungere nuovi nodi di tipo articolo . Ha funzionato bene. ma quando sto provando ad aggiungere nodi di tipo Dipartimento CCK Mostra " s: 22:" Convalida CSRF fallita "; " Ecco le schermate

Ho attraversato il link https://drupal.org/node/2013781

Ho seguito session = session_name = session_id ma ricevo ancora un errore.
inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


Cosa succede quando provi a POSTare un nodo? Hai ricevuto un messaggio di errore? Se è così, che cosa è?
Gaelan,

Risposte:


22

Spero che questo ti possa aiutare,

Per Drupal 7

Strumenti utilizzati:

  • Componente aggiuntivo di Firefox Poster per eseguire test e debug. Potrebbero esserci anche altri componenti aggiuntivi. Ma per questo esempio sto usando il componente aggiuntivo di Firefox.
  • Per facilitare la modifica e la convalida dei dati JSON è possibile utilizzare
    • Modifica i dati JSON usando questo link
    • Convalida i dati JSON utilizzando questo link

Richieste HTTP

  • Per effettuare le richieste HTTP, è necessario utilizzare il componente aggiuntivo POSTER di Firefox .

  • Due metodi comunemente usati per una richiesta-risposta tra un client e un server sono:

    • OTTENERE
    • INVIARE
  • Dopo aver scaricato il componente aggiuntivo. Apri Firefox -> Strumenti -> Poster

    inserisci qui la descrizione dell'immagine

  • Assicurati di abilitare l' autenticazione della sessione . Dopo aver configurato correttamente i Servizi , prima di creare il nodo è necessario accedere . Una volta effettuato l'accesso è possibile creare i nodi.

  • Per l'accesso usa il metodo POST, con l'URL come - http://XXXXXXXX.com/demo/rulebook/rulebook_endpoint/user/login

    inserisci qui la descrizione dell'immagine

  • Se è un utente valido , restituirà i dettagli dell'utente con ID sessione e Nome . Se non valido, verrà restituito Accesso negato

    inserisci qui la descrizione dell'immagine

  • Usando il nome e l'ID della sessione in POST HEADER, siamo in grado di creare nuovi nodi

    inserisci qui la descrizione dell'immagine

  • Ora dopo aver aggiunto HEADER, è necessario effettuare una richiesta HTTP POST e assicurarsi che l'utente abbia le autorizzazioni per creare il nodo.

    inserisci qui la descrizione dell'immagine

  • Se il nodo viene creato, otterrai la risposta con il collegamento al nodo

    inserisci qui la descrizione dell'immagine

NOTA: Se si desidera la risposta in JSON, è necessario aggiungere sempre .json alla fine dell'URL. ad es. http://XXXXXXXX.com/test/endpoint/user.json OPPURE http://XXXXXXXX.com/test/endpoint/node.json OPPURE http://XXXXXXXX.com/test/endpoint/user/user_id .json OPPURE http://XXXXXXXX.com/test/endpoint/node/node_id.json


Spiacenti, ho deselezionato l'opzione del modulo con codifica URL nel modulo servizi. ed ecco la risposta 401: Non autorizzato: autorizzazione CSRF non riuscita. cosa potrebbe causare questo?
Mille

ciao @inizio posso sapere su quale base hai assegnato il valore della sessione in HEADERS. Puoi chiarirlo. Esempio, il sessionId che ho ottenuto è SESS29af1facda0a866a687d5055f2fade2c ma nella tua risposta ha più lunghezza!
Ramaraju.d

Il valore della sessione in HEADERS è composto da session_name e session_id. vale a dire, session è la variabile e il suo valore è costituito da session_name = session_id. session = (session_name = session_value)
inizio

Indica 401: Non autorizzato: convalida CSRF non riuscita. Ho dato quanto segue come nome delle intestazioni = valore della sessione = SESS29af1facda0a866a687d5055f2fade2c = gBVoqtkN2ZNjDyOjIfpz47oQpnmCKytcgHOCHZhKRzo
Ramaraju.d

Sì, ha funzionato. Ma l'unico problema, l'articolo CCK ha titolo, field_names, body ma viene salvato solo il titolo e il nodo viene creato, ma il campo body e names sono vuoti. Come superare questo.
Ramaraju.d

7

Per Drupal 7 e Servizi 7.x-3.x

Passaggio 1: inviare una richiesta di post per la user.loginrisorsa con nome utente e password.

Se l'accesso ha esito positivo, otterrai un oggetto response con 4 proprietà:

  • session_name
  • sessid
  • gettone
  • utente (oggetto)

Screenshot dal postino di Google Chrome Screenshot dal postino di Google Chrome

Passaggio 2: inviare una richiesta di post a nodecon 2 intestazioni

  • Cookie: [session_name] = [sessid]
  • Token X-CSRF: [token]

Screenshot dal postino di Google Chrome Screenshot dal postino di Google Chrome


Ho provato a utilizzare <endpoint> /user.login ma non risponde: prntscr.com/gru4y6 - non sono sicuro di cosa sto facendo di sbagliato.
Patoshi パ ト シ

0

Se fate il POST alla API REST allora si dovrà mettere tutto in dati POST , non URL . In Postman è possibile impostare la richiesta di pubblicazione, quindi digitare x-www-form-urlencodede sotto che è possibile aggiungere i valori dei dati. Non dimenticare di aggiungere stato, uid, lingua, tipo, titolo e quindi i valori extra. L'URL della risorsa dovrebbe essere solo HOST/REST_API_PATH/node.


1
Poco confuso. Ok, puoi dirmi quali dovrebbero essere i parametri per la creazione di un nuovo articolo? Se non ti dispiace puoi pubblicare un esempio o un link in modo che io possa avere un concetto chiaro!
Ramaraju.d,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.