Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to test REST API using Chrome's extension "Advanced Rest Client"

Following the instructions at the link below, I successfully built a REST API for my Django application: http://django-rest-framework.org/tutorial/quickstart.

I can test it by doing the following from the Unix prompt:

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

It works :)

However, I would like to use the Chrome extension Advanced Rest Client to test this same functionality. I have installed the extension, but I don't know where/how to put the fields. When I make my educated-guess (as you can see in the screenshot), it rejects it saying "Authentication credentials were not provided"

screenshot of failing request

How/where should I specify my parameters to the REST API?

like image 226
Saqib Ali Avatar asked Dec 15 '13 06:12

Saqib Ali


People also ask

How do I test REST API in Chrome?

One of the easiest ways to start testing REST APIs in Chrome is by installing a REST client such as Talend or vREST. These plugins can help you to test the REST APIs you are working on. Once you have the extension you prefer, you can start sending requests and receiving responses that help you test the REST API.


2 Answers

The discoverability is dismal, but it's quite clever how Advanced Rest Client handles basic authentication. The shortcut abraham mentioned didn't work for me, but a little poking around revealed how it does it.

The first thing you need to do is add the Authorization header: menus

Then, a nifty little thing pops up when you focus the value input (note the "construct" box in the lower right): construct the auth value

Clicking it will bring up a box. It even does OAuth, if you want! convenient inputs

Tada! If you leave the value field blank when you click "construct," it will add the Basic part to it (I assume it will also add the necessary OAuth stuff, too, but I didn't try that, as my current needs were for basic authentication), so you don't need to do anything. fills in the field as needed

like image 90
Shauna Avatar answered Oct 05 '22 11:10

Shauna


From the screenshot I can see that you want to pass "user" and "password" values to the service. You have send the parameter values in the request header part which is wrong. The values are sent in the request body and not in the request header. Also your syntax is wrong. Correct syntax is: {"user":"user_val","password":"password_val"}. Also check what is the the content type. It should match with the content type you have set to your service.

like image 10
pan1490 Avatar answered Oct 05 '22 13:10

pan1490