Come testare l'API REST utilizzando l'estensione di Chrome "Advanced Rest Client"


89

Seguendo le istruzioni al link sottostante, ho creato con successo un'API REST per la mia applicazione Django: http://django-rest-framework.org/tutorial/quickstart .

Posso testarlo facendo quanto segue dal prompt di Unix:

curl -H 'Accept: application/json; indent=4' -u root:myPassword http://www.myWebsite.com/users/

Funziona :)

Tuttavia, vorrei utilizzare l'estensione di Chrome Advanced Rest Client per testare questa stessa funzionalità. Ho installato l'estensione, ma non so dove / come inserire i campi. Quando faccio la mia ipotesi plausibile (come puoi vedere nello screenshot), la rifiuta dicendo "Non sono state fornite le credenziali di autenticazione"

screenshot della richiesta non riuscita

Come / dove devo specificare i miei parametri per l'API REST?

Risposte:


99

La rilevabilità è triste, ma è abbastanza intelligente il modo in cui Advanced Rest Client gestisce l'autenticazione di base. La scorciatoia di cui ha parlato Abramo non ha funzionato per me, ma una piccola occhiata in giro ha rivelato come funziona.

La prima cosa che devi fare è aggiungere l' Authorizationintestazione: menu

Quindi, una piccola cosa elegante si apre quando focalizzi l' valueinput (nota la casella "costruisci" in basso a destra): costruire il valore di autenticazione

Facendo clic su di esso verrà visualizzata una casella. Se vuoi, fa anche OAuth! comodi ingressi

Tada! Se lasci vuoto il campo del valore quando fai clic su "costruisci", verrà aggiunta la Basicparte (presumo che aggiungerà anche le cose OAuth necessarie, ma non l'ho provato, poiché le mie esigenze attuali erano per autenticazione), quindi non devi fare nulla. riempie il campo secondo necessità


Per l'autenticazione di base: youtube.com/watch?v=1SP1hgm9JqA . Nella scheda "Modulo intestazioni", aggiungi un'intestazione "Autorizzazione". Ti suggerirà automaticamente una volta che inizi a digitare. Nel valore, fai clic sul pulsante Modifica (matita) e digita le credenziali di autenticazione nel popup.
uutsav

10

Dallo screenshot posso vedere che vuoi passare i valori "utente" e "password" al servizio. Hai inviato i valori dei parametri nella parte dell'intestazione della richiesta che è sbagliata. I valori vengono inviati nel corpo della richiesta e non nell'intestazione della richiesta. Anche la tua sintassi è sbagliata. La sintassi corretta è: {"user":"user_val","password":"password_val"}. Controlla anche qual è il tipo di contenuto. Dovrebbe corrispondere al tipo di contenuto che hai impostato per il tuo servizio.


7

Questa sembra una domanda molto vecchia, ma sto fornendo una risposta, in modo che possa aiutare gli altri. È possibile specificare le variabili nella seconda schermata nella sezione modulo, come mostrato di seguito o nel formato RAW aggiungendo le variabili come mostrato nella seconda immagine.

Specificare le variabili del modulo

Specificare in formato RAW

Se la tua variabile e i tuoi valori sono validi, dovresti vedere una risposta positiva nella sezione risposta.


cosa succede se è una richiesta GET?
Dejell

Ho dovuto impostare esplicitamente l'intestazione Content-Type, con il valore: application / x-www-form-urlencoded
shasi kanth

6

Il formato di scelta rapida generalmente utilizzato per l'autenticazione di base è http://username:password@example.com/path. Dovrai anche includere l'intestazione di accettazione nella richiesta.

inserisci qui la descrizione dell'immagine


Grazie. Ho ricevuto una risposta che includeva quanto segue: <p> Verifica CSRF non riuscita. Richiesta interrotta. </p> Come aggirarlo?
Saqib Ali

Sembra che tu non stia raggiungendo un endpoint API ma stai invece raggiungendo un endpoint per JavaScript da colpire.
Abramo

Questa è in genere una buona soluzione, a meno che l'UID o la PWD non includano i simboli ":" o "@".
Blamkin86

Potrebbe essere necessario codificare l'URL del nome utente / password se contengono caratteri riservati.
Abramo

Stavo cercando di utilizzare la tua soluzione per il comando GET su HTTPS e non ha funzionato. es. utente: @ api.com / v2 / spedizioni Funziona in curl. che c'è? non c'è password
Dejell

3

nella sezione di intestazione devi scrivere

Autorizzazione: Basic aG9sY67890vbGNpbQ ==

dove stringa dopo basic è il valore di codifica a 64 bit del tuo nome utente: password. Un esempio di php per ottenere i valori dell'intestazione è: echo "Autorizzazione: base". base64_encode ("myUser: myPassword");

NB: Ho assunto il tuo metodo di autenticazione come di base. che può essere anche diverso.


La domanda chiede specificamente come farlo nell'estensione di Chrome Advanced Rest Client.
Shauna

La risposta di Shauna era corretta e dovrebbe essere quella accettata, ma questo commento di sharif è utile anche per coloro che sono curiosi di sapere cosa ha fatto il client Chrome Advanced Rest per codificare l'utente e la password per te. Grazie.
Deemoe

3

Aggiungi l'intestazione dell'autorizzazione e fai clic sul pulsante della matita per inserire nome utente e password

inserisci qui la descrizione dell'immagine


0

Il modo più semplice per superare questo problema di autenticazione è rubare il token di autenticazione utilizzando Fiddler.

Passi

  1. Avvia violinista e browser.
  2. Navigare nel browser per aprire l'applicazione web (sito web) ed eseguire l'autenticazione richiesta.
  3. Apri Fiddler e fai clic su HTTP 200 HTML page request. Acquisizione del valore del cookie utilizzando Fiddler
  4. Nel riquadro di destra, dalle intestazioni della richiesta, copia il valore del parametro dell'intestazione del cookie. inserisci qui la descrizione dell'immagine
  5. Aprire il client REST e fare clic sulla scheda "Modulo intestazione" e fornire il valore del cookie dagli appunti.

Fare clic sul pulsante INVIA e recupererà i risultati.


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.