我对Django Rest Framework响应消息有两个问题
1。
使用generics.ListCreateAPIView
或时RetrieveDestroyAPIView
,通常返回资源
例如,使用POST方法调用/ map /,结果将类似于一个对象:
{
"x_axis": "23",
"y_axis": "25",
"map_id": 1,
}
我想知道可以将此消息编辑为以下自定义消息吗?
{"Success":"msg blablabla"}
2。
使用时serializers.ValidationError
,如果使用,我可以写我的自定义消息raise serializers.ValidationError("map_id does not exist")
。响应消息将是
{"map_id":["map_id does not exist"]}
我可以像下面这样将这部分编辑为自定义吗?
{"FAIL":"map_id does not exist"}
我想知道这一点,因为前端不希望使用这种格式,他们喜欢:
{"Success":"msg blablabla"}
{"Fail":"msg blablabla"}
{"USERNAME_DUPLICATE":1001}
{"FIELD_REQUIRED":1002}
这样他们可以更方便地告诉用户操作错误的原因吗?
1在视图上覆盖create方法,并放置如下内容:
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response({"Success": "msb blablabla"}, status=status.HTTP_201_CREATED, headers=headers)
2在上面的代码中,如果序列化程序无效,请更改raise_exception
为False
返回任意值。IE:
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
if not serializer.is_valid(raise_exception=False):
return Response({"Fail": "blablal", status=status.HTTP_400_BAD_REQUEST)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response({"Success": "msb blablabla"}, status=status.HTTP_201_CREATED, headers=headers)
您正在使用CBV,因此可以创建扩展DRF类和DRY的自定义泛型类
但是,我要说的是您不应该在响应中添加“成功”或“失败” ...如果http代码是2xx,则用户会知道没问题;如果请求有问题,则为4xx;如果请求为问题,则为5xx。是您的代码(或服务器)上的错误,您无需在响应正文中重复该信息,只需使用HTTP状态代码
希望这可以帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句