0

我正在制作一个类似于 url 的 API 系统,localhost:8080/api/v1/end_name并且我正在使用django-rest-framework-social-oauth2库进行社交身份验证,也用于我的自定义用户身份验证。问题是他们正在为 url 提供 api 响应,例如localhost:8080/auth/token以下格式

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

但我需要以我的方式自定义它,因为我的响应格式不同。我的一个就像跟随..

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

我需要我的回复data: {}。我的一个问题是

  • 我该怎么做?

我的另一个问题是

  • 我可以自定义 api urllocalhost:8080/auth/tokenlocalhost:8080/api/v1/auth/token
4

1 回答 1

0

我最终想出了解决方案。要进行自定义响应,我必须覆盖他们的方法并根据我的需要自定义响应。这里调用的方法名为TokenView. 所以我用以下方式定制了它

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

makecontext是我自定义的 json maker 方法。

于 2019-03-12T19:34:10.887 回答