Django REST browser interface

Question:

I’m writing a set of REST services for a Django project. I’ve been using django-rest-framework for a while. Because of its limited functionality I had to switch to django-piston which I quite enjoy.

However, django-rest-framework had one really nice feature – it was able to display an admin-like interface for testing the created services from the browser. It’s just terrific for debugging purposes. It’s very simple: one form is displayed for each HTTP method like “GET”, “POST”, etc. Along with that a drop-down list of available content types and a text field for putting in the data to be sent.

As I view it, this isn’t really a feature in any way directly connected with a particular REST framework. It isn’t even necessarily about Django. It could all be achieved just using HTML + JS, or an external website.

My question is: What do you use for manual testing / debugging web services? Could you point me to some HTML snippet or a Django app that would do the described thing?

Asked By: julx

||

Answers:

This may seem obvious, but:
Why not just use Django’s testing client (django.test.client.Client)? then instead of manually ‘debugging’ in your browser, you can write unit tests with expectations and get leverage out of those further down the track.

e.g.

from django.test.client import Client
client = Client()
resp = client.put('/employee/2/', data={'email': '[email protected]'}, follow=True)
#... etc
Answered By: jsw

As the author of django-rest-framework it’d be great to pick your brains about which bits of functionality could do with fleshing out. 🙂 (obv i’ve got some thoughts of my own and areas I’m planning to work on, but be really good to get some user perspective)

Your absolutely right about the API browser not being limited to any particular framework. To me that’s the big deal with DRF and I’d love to see more API frameworks take a similar approach. One of the supposed benefits of RESTful APIs is that they should be self-describing, and it seems counter-intuitive to me that so many of the Web APIs we build today are not Web browseable.

Oh, and totally agree with jsw re. testing Web APIs in django, I wouldn’t use the framework’s browsable API to replace automated tests.

Answered By: Tom Christie

I had the same problem and that was eaily solved by logging out of admin page in that project.

Answered By: Saddam Meshaal