dif请求与响应

请求与响应

1.Request类

        DRF的Request不再是原生Django里的HttpRequest,而是DRF提供的拓展了HttpRequest类的Request对象,所以其用法和HttpRequest大致相同但也有不同之处

\bullet  在原生Django中put请求提交的数据在requuest.POST中是取不到的而在DRF的Request类通过request.data就可以获取POST、PUT、PATCH请求方式解析后的数据

\bullet  drf 请求的所有 url 拼接参数都被解析到 request.query_params 中,原生Django中request.GET功能一样

ps:其他的用法与之前原生Django一样,继承APIView后每一次请求都是一个新的request

2.Response类

        DRF提供了一个响应类Response,使用该类构造响应对象时,响应的具体内容数据会被转换成符合前端需求的类型

3.请求编码与响应编码

\bullet 请求编码:

请求默认能解析的请求编码:urlencoded、form-data、json三种编码方式,但其实是因为在drf内置的配置文件中提前配置好了

# dif有两套配置 一套在项目的settings.py中另一套是默认的配置
REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (  # 默认响应渲染类
        ‘rest_framework.parsers.JSONParser',  # 可以解析json格式
        'rest_framework.renderers.FormParser',  # 可以解析urlencoded格式
        'rest_framework.renderers.MultiPartParser',  # 可以解析form-data格式
    )
}

但是定义在配置文件中的话太广泛了,我们也可以根据每个视图类的具体要求在视图类中局部配置这样解析类就会优先使用视图类自己的

class TestView(APIView):
    parser_classes = [JSONParser,FormParser,MultiPartParser] # 指定视图类支持哪个解析格式

ps:再视图类中局部配置后解析类的使用顺序成为:优先视图类自己的然后用项目 settings.py配置文件中配置的,最后再用内置配置文件内的

\bullet  响应编码

响应再返回的时候会根据用浏览器还是接口测试工具展示出不同的样子,在浏览器中展示会有好看的样子而在接口测试工具中展示的是json格式,默认情况下响应编码是根据客户端类型决定的

全局配置:在项目配置文件中配置(settings.py)

REST_FRAMEWORK = {
        'DEFAULT_RENDERER_CLASSES': [
            'rest_framework.renderers.JSONRenderer', # json格式
            'rest_framework.renderers.BrowsableAPIRenderer', #浏览器的格式
        ]
    }

局部配置:在视图类中单独配置

class TestView(APIView):
    renderer_classes = [JSONRenderer,]

ps:和请求编码一样使用顺序也是优先视图类自己再项目文件配置,但是在实际编码中响应一般不配配置使用默认的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值