So testen Sie die REST-API mit der Chrome-Erweiterung "Advanced Rest Client"


89

Den Anweisungen unter dem folgenden Link folgend, habe ich erfolgreich eine REST-API für meine Django-Anwendung erstellt: http://django-rest-framework.org/tutorial/quickstart .

Ich kann es testen, indem ich an der Unix-Eingabeaufforderung Folgendes tue:

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

Es klappt :)

Ich möchte jedoch den Advanced Rest Client der Chrome-Erweiterung verwenden, um dieselbe Funktionalität zu testen. Ich habe die Erweiterung installiert, weiß aber nicht, wo / wie ich die Felder platzieren soll. Wenn ich meine Vermutung anstelle (wie Sie im Screenshot sehen können), wird die Meldung "Authentifizierungsdaten wurden nicht angegeben" abgelehnt.

Screenshot der fehlgeschlagenen Anfrage

Wie / wo soll ich meine Parameter für die REST-API angeben?

Antworten:


99

Die Erkennbarkeit ist düster, aber es ist ziemlich clever, wie Advanced Rest Client mit der grundlegenden Authentifizierung umgeht. Die erwähnte Abkürzung Abraham hat bei mir nicht funktioniert, aber ein bisschen Stöbern hat gezeigt, wie es geht.

Als erstes müssen Sie den AuthorizationHeader hinzufügen : Menüs

Wenn Sie die valueEingabe fokussieren, wird eine kleine Kleinigkeit angezeigt (beachten Sie das Feld "Konstruieren" unten rechts): Konstruieren Sie den Auth-Wert

Wenn Sie darauf klicken, wird ein Feld angezeigt. Es macht sogar OAuth, wenn Sie wollen! bequeme Eingaben

Tada! Wenn Sie das Wertefeld leer lassen, wenn Sie auf "Konstruieren" klicken, wird das BasicTeil hinzugefügt (ich gehe davon aus, dass es auch das erforderliche OAuth-Material hinzufügt, aber das habe ich nicht versucht, da meine aktuellen Anforderungen grundlegend waren Authentifizierung), sodass Sie nichts tun müssen. füllt das Feld nach Bedarf aus


Für die Basisauthentifizierung - youtube.com/watch?v=1SP1hgm9JqA . Fügen Sie auf der Registerkarte "Kopfzeilenformular" eine Kopfzeile "Autorisierung" hinzu. Sobald Sie mit der Eingabe beginnen, wird automatisch ein Vorschlag gemacht. Klicken Sie im Wert auf die Schaltfläche Bearbeiten (Bleistift) und geben Sie die Authentifizierungsdaten in das Popup ein.
Uutsav

10

Auf dem Screenshot kann ich sehen, dass Sie "Benutzer" - und "Passwort" -Werte an den Dienst übergeben möchten. Sie haben die Parameterwerte im Anforderungsheaderteil gesendet, was falsch ist. Die Werte werden im Anforderungshauptteil und nicht im Anforderungsheader gesendet. Auch deine Syntax ist falsch. Die richtige Syntax lautet: {"user":"user_val","password":"password_val"}. Überprüfen Sie auch den Inhaltstyp. Es sollte mit dem Inhaltstyp übereinstimmen, den Sie für Ihren Dienst festgelegt haben.


7

Dies scheint eine sehr alte Frage zu sein, aber ich gebe eine Antwort, damit sie anderen helfen kann. Sie können die Variablen im zweiten Bildschirm im Formularabschnitt wie unten gezeigt oder im RAW-Format angeben, indem Sie die Variablen wie im zweiten Bild gezeigt anhängen.

Geben Sie Formularvariablen an

Geben Sie im RAW-Format an

Wenn Ihre Variablen und Variablenwerte gültig sind, sollte im Antwortabschnitt eine erfolgreiche Antwort angezeigt werden.


Was ist, wenn es sich um eine GET-Anfrage handelt?
Dejell

Ich musste den Content-Type-Header explizit mit dem Wert setzen: application / x-www-form-urlencoded
shasi kanth

6

Das Verknüpfungsformat, das im Allgemeinen für die Basisauthentifizierung verwendet wird, ist http://username:password@example.com/path. Sie möchten auch den Accept-Header in die Anforderung aufnehmen.

Geben Sie hier die Bildbeschreibung ein


Vielen Dank. Ich habe eine Antwort erhalten, die Folgendes enthielt: <p> CSRF-Überprüfung fehlgeschlagen. Anfrage abgebrochen. </ P> Wie komme ich um diese herum?
Saqib Ali

Klingt so, als würden Sie keinen API-Endpunkt treffen, sondern einen Endpunkt, den JavaScript erreichen soll.
Abraham

Dies ist normalerweise eine gute Lösung - es sei denn, Ihre UID oder PWD enthält die Symbole ":" oder "@".
Blamkin86

Möglicherweise müssen Sie den Benutzernamen / das Kennwort per URL verschlüsseln, wenn diese reservierte Zeichen enthalten.
Abraham

Ich habe versucht, Ihre Lösung für den GET-Befehl unter HTTPS zu verwenden, aber es hat nicht funktioniert. zB Benutzer: @ api.com / v2 / sendments Es funktioniert in Curl. Was ist falsch? Es gibt kein Passwort
Dejell

3

In den Header-Bereich müssen Sie schreiben

Autorisierung: Basic aG9sY67890vbGNpbQ ==

Dabei ist string nach basic der 64-Bit-Codierungswert Ihres Benutzernamens: password. PHP-Beispiel zum Abrufen der Header-Werte ist: echo "Authorization: Basic". base64_encode ("myUser: myPassword");

nb: Ich habe Ihre Authentifizierungsmethode als grundlegend angenommen. das kann auch anders sein.


In der Frage wird speziell gefragt, wie dies in der Chrome-Erweiterung Advanced Rest Client ausgeführt wird.
Shauna

Shaunas Antwort war korrekt und sollte die akzeptierte Antwort sein, aber dieser Kommentar von sharif ist auch nützlich für diejenigen, die neugierig sind, was der Chrome Advanced Rest-Client getan hat, um den Benutzer und das Kennwort für Sie zu verschlüsseln. Vielen Dank.
Deemoe

3

Fügen Sie den Autorisierungsheader hinzu und klicken Sie auf die Schaltfläche mit dem Stift, um den Benutzernamen und die Kennwörter einzugeben

Geben Sie hier die Bildbeschreibung ein


0

Der einfache Weg, um dieses Authentifizierungsproblem zu lösen, besteht darin, das Authentifizierungstoken mit Fiddler zu stehlen.

Schritte

  1. Starten Sie Geiger und Browser.
  2. Navigieren Sie im Browser, um die Webanwendung (Website) zu öffnen und die erforderliche Authentifizierung durchzuführen.
  3. Öffnen Sie Fiddler und klicken Sie auf HTTP 200 HTML-Seitenanforderung. Erfassen des Cookie-Werts mit Fiddler
  4. Kopieren Sie im rechten Bereich aus den Anforderungsheadern den Parameterwert des Cookie-Headers. Geben Sie hier die Bildbeschreibung ein
  5. Öffnen Sie den REST-Client, klicken Sie auf die Registerkarte "Header-Formular" und geben Sie den Cookie-Wert aus der Zwischenablage ein.

Klicken Sie auf die Schaltfläche SENDEN, um die Ergebnisse abzurufen.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.