1. 你理解的Http协议?
- 建立在tcp之上
- 一次请求一次响应然后断开连接(无状态、短连接)
- 请求和响应
发送:请求头
请求体
host:www.luffy.com
content-type:application/json
请求体
响应:响应头
响应体
2. django请求生命周期
-浏览器发送请求到后端---->后端{wsgi---->中间件---->路由---->视图---->(模型,数据库)---->将数据经过中间件返回wsgi}---->经过封装返回给浏览器
3. wsgi
-web服务网关接口,是一套协议,而实现协议的模块是wsgiref--->接收请求封装成对象交给web服务框架
4. django中间件是什么?
-在视图函数执行前顶自己一些操作,
5. 使用中间件做过什么?
- 内置
- csrf
- session
- 自定义
- 登录认证
- 权限
- cors
6. 中间件中有多少个方法?
5个
7. FBV和CBV是什么?以及优缺点。
-FBV:在视图里通过函数处理请求;优点:灵活
-CBV:在视图里通过类处理请求;优点:简洁,通过反射的方法根据method不同做不同的操作,提高了代码的复用性.
8. rest api
- 1.建议使用HTTPS,2.标识版本,3.标识是api,4.面向资源编程,5.条件,6.根据method不同进行不同操作,7.返回值,8.返回错误信息,9.返回url,10.响应式返回状态码
9. django rest framework框架
-1.路由,2.视图,3.版本,4.权限,5.认证,6.频率控制,7.解析器,8.序列化,9.分页,10.渲染器
10. 视图常见的继承
from rest_framework.views import APIView # *
from rest_framework.generics import GenericAPIView
from rest_framework.viewsets import GenericViewSet # as_view
from rest_framework.viewsets import ModelViewSet # *
11. 如何实现的访问频率控制?
匿名用户:无法控制,因为用户可以换代理IP
{
192.168.1.1:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.2:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.3:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.4:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.5:[1521223123.232, 1521223122.232, 1521223121.232],
192.168.1.6:[1521223123.232, 1521223122.232, 1521223121.232],
}
登录用户:如果有很多账号,也无法限制
{
alex:[1521223123.232, 1521223122.232, 1521223121.232],
eric:[1521223123.232, 1521223122.232, 1521223121.232],
}
参考源码:from rest_framework.throttling import SimpleRateThrottle
12. 序列化
自定义字段:- source - method