Comment tester l'API REST à l'aide de l'extension "Advanced Rest Client" de Chrome


89

En suivant les instructions du lien ci-dessous, j'ai réussi à créer une API REST pour mon application Django: http://django-rest-framework.org/tutorial/quickstart .

Je peux le tester en procédant comme suit à partir de l'invite Unix:

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

Ça marche :)

Cependant, j'aimerais utiliser l'extension Chrome Advanced Rest Client pour tester cette même fonctionnalité. J'ai installé l'extension, mais je ne sais pas où / comment mettre les champs. Lorsque je fais ma supposition éclairée (comme vous pouvez le voir sur la capture d'écran), il la rejette en disant "Les informations d'authentification n'ont pas été fournies"

capture d'écran de l'échec de la demande

Comment / où dois-je spécifier mes paramètres dans l'API REST?

Réponses:


99

La découvrabilité est lamentable, mais la manière dont Advanced Rest Client gère l'authentification de base est assez intelligente. Le raccourci mentionné par Abraham n'a pas fonctionné pour moi, mais un peu de fouille a révélé comment il le faisait.

La première chose à faire est d'ajouter l'en- Authorizationtête: les menus

Ensuite, une petite chose astucieuse apparaît lorsque vous focalisez l' valueentrée (notez la case "Construire" en bas à droite): construire la valeur d'authentification

En cliquant dessus, une boîte apparaîtra. Il fait même OAuth, si vous le souhaitez! entrées pratiques

Tada! Si vous laissez le champ de valeur vide lorsque vous cliquez sur "construire", cela ajoutera la Basicpartie (je suppose que cela ajoutera également les éléments OAuth nécessaires, mais je n'ai pas essayé cela, car mes besoins actuels étaient pour authentification), vous n'avez donc rien à faire. remplit le champ au besoin


Pour l'authentification de base - youtube.com/watch?v=1SP1hgm9JqA . Dans l'onglet "Formulaire d'en-têtes", ajoutez un en-tête "Autorisation". Il fera une suggestion automatique une fois que vous commencerez à taper. Dans la valeur, cliquez sur le bouton Modifier (crayon) et saisissez les informations d'authentification dans la fenêtre contextuelle.
uutsav

10

Sur la capture d'écran, je peux voir que vous souhaitez transmettre les valeurs "utilisateur" et "mot de passe" au service. Vous avez envoyé les valeurs de paramètre dans la partie d'en-tête de la demande, ce qui est incorrect. Les valeurs sont envoyées dans le corps de la demande et non dans l'en-tête de la demande. Votre syntaxe est également erronée. La syntaxe correcte est la suivante: {"user":"user_val","password":"password_val"}. Vérifiez également quel est le type de contenu. Il doit correspondre au type de contenu que vous avez défini pour votre service.


7

Cela semble une question très ancienne, mais j'apporte une réponse pour qu'elle puisse aider les autres. Vous pouvez spécifier les variables dans le deuxième écran dans la section formulaire, comme indiqué ci-dessous ou au format RAW en ajoutant les variables comme indiqué dans la deuxième image.

Spécifier les variables de formulaire

Spécifiez au format RAW

Si vos valeurs de variable et de variable sont valides, vous devriez voir une réponse positive dans la section de réponse.


et si c'est une demande GET?
Dejell

J'ai dû définir explicitement l'en-tête Content-Type, avec la valeur: application / x-www-form-urlencoded
shasi kanth

6

Le format de raccourci généralement utilisé pour l'authentification de base est http://username:password@example.com/path. Vous souhaiterez également inclure l'en-tête d'acceptation dans la demande.

entrez la description de l'image ici


Merci. J'ai reçu une réponse contenant les éléments suivants: <p> La vérification CSRF a échoué. Demande annulée. </p> Comment contourner ce problème?
Saqib Ali

On dirait que vous n'atteignez pas un point de terminaison d'API, mais que vous frappez plutôt un point de terminaison pour que JavaScript atteigne.
abraham

C'est généralement une bonne solution - à moins que votre UID ou votre PWD n'incluent les symboles ":" ou "@".
Blamkin86

Vous devrez peut-être encoder l'URL du nom d'utilisateur / mot de passe s'ils contiennent des caractères réservés.
abraham

J'essayais d'utiliser votre solution pour la commande GET sur HTTPS et cela n'a pas fonctionné. par exemple utilisateur: @ api.com / v2 / expéditions Cela fonctionne dans curl. Qu'est-ce qui ne va pas? il n'y a pas de mot de passe
Dejell

3

dans la section d'en-tête, vous devez écrire

Autorisation: Basic aG9sY67890vbGNpbQ ==

où chaîne après basic est la valeur d'encodage 64 bits de votre nom d'utilisateur: mot de passe. Exemple php pour obtenir les valeurs d'en-tête: echo "Authorization: Basic". base64_encode ("myUser: myPassword");

nb: j'ai assumé votre méthode d'authentification comme basique. qui peut également être différent.


La question demande spécifiquement comment le faire dans l'extension Chrome Advanced Rest Client.
Shauna

La réponse de Shauna était correcte et devrait être la réponse acceptée, mais ce commentaire de sharif est également utile pour ceux qui sont curieux de savoir ce que le client Chrome Advanced Rest a fait pour encoder l'utilisateur et le mot de passe pour vous. Merci.
Deemoe

3

Ajoutez un en-tête d'autorisation et cliquez sur le bouton crayon pour entrer le nom d'utilisateur et les mots de passe

entrez la description de l'image ici


0

Le moyen le plus simple de surmonter ce problème d'authentification consiste à voler un jeton d'authentification à l'aide de Fiddler.

Pas

  1. Lancez le violoniste et le navigateur.
  2. Naviguez dans le navigateur pour ouvrir l'application Web (site Web) et effectuez l'authentification requise.
  3. Ouvrez Fiddler et cliquez sur la demande de page HTML HTTP 200. Capture de la valeur du cookie à l'aide de Fiddler
  4. Dans le volet droit, à partir des en-têtes de demande, copiez la valeur du paramètre d'en-tête de cookie. entrez la description de l'image ici
  5. Ouvrez le client REST et cliquez sur l'onglet «Formulaire d'en-tête» et indiquez la valeur du cookie à partir du presse-papiers.

Cliquez sur le bouton ENVOYER et il récupérera les résultats.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.