0

I am making an API system which follows url like localhost:8080/api/v1/end_name and i'm using django-rest-framework-social-oauth2 library for social authentication also for my custom user authentication. The problem is they are providing api response for url like localhost:8080/auth/token in following format e.g.

{
"access_token": "........",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "......"
}

but i need to customize it in my way as my response format is different. My one is like following..

{
    "error": false,
    "message": "User created successfully",
    "data": {
        "email": "localtestuse2@beliefit.com"
    }
}

i need the response in my data: {}. My one question is

  • How can I do it?

My another question is

  • Can i customize the api url localhost:8080/auth/token to localhost:8080/api/v1/auth/token?
Yassir Arafat Roni
  • 282
  • 1
  • 2
  • 15

1 Answers1

0

i came up with the solution eventually. To make custom response, i had to override their method and customize the response according to my need. Here the method that is invoked named TokenView. so i customized it in following way

class UserLoginView(TokenView):
@method_decorator(sensitive_post_parameters("password"))
def post(self, request, *args, **kwargs):
    url, headers, body, status = self.create_token_response(request)
    # body is str here, we need to make it proper json
    data = json.loads(body)

    if status != 200:
        response = Response(makeContext(True, "Couldn't generated token", data))
    else:
        response = Response(makeContext(False, "Token generated successfully", data))

    response.accepted_renderer = JSONRenderer()
    response.accepted_media_type = "application/json"
    response.renderer_context = {}
    return response

here makecontext is my customized json maker method.

Yassir Arafat Roni
  • 282
  • 1
  • 2
  • 15