• 接口,序列化总结


    周总结

    接口

    """
    1、概念:url + 请求方式 + 请求参数 + 响应结果
    
    2、接口文档:采用某种方式某种平台(Yapi)将接口的四部分呈现成文档形式
    
    3、restful规范:
    	url:https://api.baidu.com/v1/books/?ordering=-price,id&limit=3
    	请求方式:get | post | put | patch | delete
    	响应:
    	{
    		'status': 0,
    		'msg': 'ok',
    		'results': [
    			{
    				'img': https://api.baidu.com/media/img/001.png
    			}
    		]
    	}, http_status=200
    	
    4、drf框架:
    	1)django的插件
    	2)安装命令:pip install djangorestframework
    	3)在django项目的settings中注册app
    """
    

    基础模块

    """
    1、APIView类
    	1)继承View
    	2)as_view:禁用csrf
    	3)dispatch:请求、解析、三大认证、异常、响应、渲染
    	4)类属性:局部全局配置
    	
    2、请求模块:
    	1)request兼容request._request
    	2)request.query_params,request.data
    	
    3、解析模块:form-data、urlencoded、json三种格式的数据包解析
    
    4、异常模块:
    	1)settings中配置自定义异常处理函数
    	2)重写异常处理函数,先交给drf处理,如果没有处理,自己再处理一下,重点要记录异常日志
    	
    5、响应模块:
    	1)data
    	2)status:http_status
    	3)exception
    	
    6、渲染模块:json、browser
    """
    

    序列化模块

    """
    1、序列化家族:Serializer、ModelSerializer、ListSerializer
    	1)Serializer:底层系列化
    	2)ModelSerializer:继承Serializer,用配置反射完成序列化:model,fields,extra_kwargs
    	3)ListSerializer:辅助ModelSerializer,在ModelSerializer中通过list_serializer_class来配置,建立联系,ListSerializer类的对象.child就是拿到关联的ModelSerializer
    	
    2、序列化字段:
    	1)model类中的字段,可以直接写在fields
    	2)自定义序列化字段
    		- 序列化类中:SerializerMethodField
    		- 模型类中:@property
    		
    3、反序列化字段:
    	1)model类中的字段,可以直接写在fields
    	2)自定义反序列化字段:
        	- 序列化类中:字段 = serializer.类型(约束, write_only=True)
        	
    4、多表关系:
    	1)db_constraint断关联
    	2)relate_name设置反向字段
    	3)on_delete设置级联关系:级联、不处理、置空、默认值
    	
    5、外界连表深度:
    	1)子序列化
    	2)depth配置
    	3)@property自定义序列化字段
      
    6、十大接口:
    	1)单查群查 => many=True
    	2)单增群增 => many=True
    	3)单删群删 => 只做is_delete字段修改,不需要序列化类参与
    	4)单改群改 => ListSerializer、many=True、partial=True
    	5)视图序列化传参 => context={}
    	
    7、序列化字段规则:提供给前台,前台才能看见,用read_only表示只序列化
    
    8、反序列化字段规则:用write_only表示只反序列化
    	1)必填字段:不提供就报错,声明默认或设置required=True
    	2)选填字段:不填不校验,填必校验,声明但是required=False
    	3)不填字段:不声明,且能不提供就能入库
    """
    
  • 相关阅读:
    【CF1009F】Dominant Indices(长链剖分优化DP)
    长链剖分学习笔记
    【洛谷5294】[HNOI2019] 序列(主席树维护单调栈+二分)
    【洛谷5286】[HNOI2019] 鱼(计算几何)
    【洛谷5292】[HNOI2019] 校园旅行(思维DP)
    【UVA1309】Sudoku(DLX)
    初学DLX
    【LOJ2461】「2018 集训队互测 Day 1」完美的队列(分块+双指针)
    【LOJ6062】「2017 山东一轮集训 Day2」Pair(线段树套路题)
    【LOJ6060】「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set(线性基)
  • 原文地址:https://www.cnblogs.com/jinhongquan/p/12120551.html
Copyright © 2020-2023  润新知