Wednesday 23 September 2015

create a RESTful API in Django without using thirdparty framework like Django Rest Framework and Tastypie


If you want to implement Rest API in django and you do not want to user Django Rest Framework , tastypie or any other third party framework then you can follow rules give below to implement REST API almost .

Use HTTP verbs  (GET, POST, PUT, DELETE, PATCH)

You should return response in JSON(you can also return in xml)

If you are writing one url to group all of your api related to a object calling by using proper HTTP verbs  then you can almost achieve it.

URL       /users/

Then REST API for user related operations can be -


GET  /users/        To get all users's information.
GET  /users/<pk>/    To get a user's information.
POST  /users/   To create a user.
PUT /users/<pk>   To update a user information.
PUT  /users/   To update all user's information at once.
DELETE /users/<pk>/  To delete a user.
DELETE /users/  To delete all users.


To implement view it will be great if you are writing class based views and you view can be .

class UserView(View):
    def get(self, request, *args, **kwargs):
        # logic
    def post(self, request, *args, **kwargs):
        # logic
    def put(self, request, *args, **kwargs):
        # logic
    def delete(self, request, *args, **kwargs):
        # logic


You can return JSON in response by following below pattern in each your method in your view.

import json

from django.http import HttpResponse

def method(arguments):
    # logic --
    # logic  --
    data = {'pk': '1'}
    response = json.dumps(data)
    return HttpResponse(response, content_type="application/json")