rest_framework框架的请求和相应

1.请求

image

如果的我们的视图类继承了APIView的话,我们的前端传递的request参数会被二次封装,我们可以通过源码来进行分析。

image

也因此我们在使用request时会比原来方便很多,比如:

1.1 request.data中包含了前端以三种编码方式传递来的参数,django原生的request并不会处理json格式的编码,只会放在request中,而我们进行二次封装后的所有数据都存放在request.data中

1.2 request.query_params 与django标准的request.GET相同,只是改了个名字而已



2.响应

image

2.1Response中的各个参数:

data: 一般会传入返回给前端的字典

status:响应状态码

template_name:当是以浏览器访问是返回的页面样式的模板名字,一般不会修改,使用默认的即可

headers:响应头中存放的内容,就是一个字典

content_type:响应的编码格式,比如:application/json和text/html,浏览器响应成浏览器的格式,postman响应成json格式,通过配置实现的(默认配置)

2.2DRF返回格式的设置

全局:-在setting.py中加入如下

点击查看代码
REST_FRAMEWORK = {
            'DEFAULT_RENDERER_CLASSES': (  # 默认响应渲染类
                'rest_framework.renderers.JSONRenderer',  # json渲染器
                'rest_framework.renderers.BrowsableAPIRenderer',  # 浏览API渲染器
            )
        }
局部:对某个视图类有效
点击查看代码
#在视图类中写如下
        from rest_framework.renderers import JSONRenderer
        renderer_classes=[JSONRenderer,]

2.2 自定义Response对象

# utils.py
class APIResponse(Response):
def __init__(self,code=1000,msg='成功',data=None,status=None,headers=None,**kwargs):
    back_dic={'code':code,'msg':msg} # 返回的data
    if data:  # 若data有值将它添加到返回data中,我们可也选择传不传data
        back_dic['data']=data
    back_dic.update(kwargs)
    super().__init__(data=back_dic,headers=headers,status=status) # 调用Response类的初始化方法
# 使用
return APIResponse(data={"name":'mress'},token='dsafsdfa',aa='dsafdsafasfdee') # token,aa参数会被添加到返回data的字典中
return APIResponse(data={"name":'mress'})
return APIResponse(code='101',msg='错误',data={"name":'mress'},token='dsafsdfa',aa='dsafdsafasfdee',header={})
posted @ 2022-07-17 19:58  mress  阅读(82)  评论(0)    收藏  举报