• APIView请求生命周期


    A作业(必做)

    """
    1、整理今天所学知识点
    
    2、简单过过请求模块的源码流程,建立一个视图类,完成一项渲染模块与解析模块的全局局部配置
    
    3、在自己项目中自定义一下异常处理函数,并配置给项目
    """
    
    from rest_framework.parsers import JSONParser,FormParser,MultiPartParser
    from rest_framework.renderers import JSONRenderer
    from rest_framework.renderers import BrowsableAPIRenderer
    from rest_framework.views import APIView
    from rest_framework.response import Response
    
    class Student(APIView):
        parser_classes = [JSONParseer]   
        renderer_classes = [JSONRenderer] 
        
        def get(self,request,*args,**kwargs):
            return Response('drf get ok')
    
        def post(self,request,*args,**kwargs):
            return Response('drf post ok')
    from rest_framework.views import exception_handler as drf_exception_handler
    from rest_framework.response import Response
    from rest_framework import status  
    
    def exception_handler(exc, context):     
        response = drf_exception_handler(exc, context)
        detail = '%s-%s-%s' %(context.get('view'),context.get('request'),exc)
        if not response:  
            response = Response({'detail':detail},, status=status.HTTP_500_INTERNAL_SERVER_ERROR, exception=True)
        else:
            response.data = {'detail':detail}
        return response
    urls.py:
        from django.conf.urls import url, include
        from django.contrib import admin
    
        urlpatterns = [
            url(r'^admin/', admin.site.urls),
            url(r'^api/', include('api.urls')),
        ]
    
    api.urls.py:
        
        from django.conf.urls import url
        from . import  views
        urlpatterns = {
            url(r'^student/$',views.Student.as_view()),
        }
    

    B作业(选做)

    """
    1、预习视频
    
    2、后期项目会出现大量的响应,响应数据可以如下
    正确的:Response({'status':0,'msg':'ok','results':[]})
    异常的:Response({'status':1,'msg':'error'}, status=400)
    ...
    
    能不能二次封装Response类(自定义一个APIResponse类继承Response),优化响应
    正确的:APIResponse('results'=[])  # 数据状态码和状态信息有默认值,可以不传
    异常的:Response(1,'error', status=400)  # 可以按位传数据状态码和状态信息,错误时还可以设置网络状态码
    封装后的响应与封装前的响应结果一致,但是大大简化了响应写法
    """
    
  • 相关阅读:
    【分布式架构】“spring cloud”与“dubbo”微服务的对比
    gradle项目与maven项目互转
    Maven和Gradle对比
    从头开始搭建一个dubbo+zookeeper平台
    Kafka、 RabbitMQ、Redis、 ZeroMQ、 ActiveMQ、 Kafka/Jafka 对比
    Docker下redis的主从、持久化配置
    HIBERNATE与 MYBATIS的对比
    叶金荣:MySQL通用优化技巧
    为 Virtual Box 中的 CentOS 6.6 配置本地DVD光盘做yum软件源
    eclipse发布项目时,会自动还原server.xml和content.xml文件
  • 原文地址:https://www.cnblogs.com/jinhongquan/p/12120451.html
Copyright © 2020-2023  润新知