A go-to production API response with an easy format for building APIs with Python.
To get it running, follow the steps below:
1). Pip install the package in your project terminal:
pip install rest-api-response
2). In the file (.py) that you wish to use it, import it:
from rest_api_response import success_response, error_response
That's pretty much it - you can now call the function and pass the required arguments!
Suppose you have an API class that returns a list of blog posts to a client:
# imports goes here
...
class PostListAPIView(views.APIView):
serializer_class = PostSerializer
def get(self, request):
"""Returns a list of posts"""
posts = Post.objects.all()
serializer = self.serializer_class(posts, many=True)
return Response(serializer.data)
The API response would be:
[
{
"title": "First blog post",
"content": "Lorem ipsume content",
"author": 1
},
{
"title": "Second blog post",
"content": "Lorem ipsume content",
"author": 2
},
{
"title": "Third blog post",
"content": "Lorem ipsume content",
"author": 3
}
]
This works too, but let's take the response to the next level by doing this:
# imports goes here
...
from rest_api_response import success_response
class PostListAPIView(views.APIView):
serializer_class = PostSerializer
def get(self, request):
"""Returns a list of posts"""
posts = Post.objects.all()
serializer = self.serializer_class(posts, many=True)
_response = success_response(
message="Post retrieved!",
data=serializer.data
)
return Response(data=_response, status=status.HTTP_200_OK)
The API response would be:
[
"status": true,
"message": "Posts retrieved!",
"data": [
{
"title": "First blog post",
"content": "Lorem ipsume content",
"author": 1
},
{
"title": "Second blog post",
"content": "Lorem ipsume content",
"author": 2
},
{
"title": "Third blog post",
"content": "Lorem ipsume content",
"author": 3
}
]
]
And that's it. You have a nicely catchy response. :-)
All contributions are welcome:
- Read the issues, Fork the project and do a Pull Request.
- Request a new topic creating a
New issue
with theenhancement
tag. - Find any kind of errors in the
README
and create aNew issue
with the details or fork the project and do a Pull Request. - Suggest a better or more pythonic way for existing examples.