HTTP协议,web框架,wsgiref模块,Django简介,安装 #day50
转载
软件开发架构
1.c/s架构
2.b/s架构
# b/s本质也是c/s架构
后端:将前端与数据库链接在一起
HTTP协议
"""规定了浏览器与服务端之间数据交互的格式"""
# 1.四大特性
1.基于TCP、IP之上的作用于应用层的协议
2.基于请求响应
3.无状态
见你千百遍我都当你如初见
ps:cookie、session、token...
4.无(短)连接
ps:长连接:websocket 案例:即时通讯
# 2.数据格式
请求数据格式
请求首行(请求方法...)
请求头(一大堆K:V键值对)
\r\n
请求体(并不是所有的请求方法都有get没有,post有,主要用来携带敏感性数据)
响应数据格式
响应首行(响应状态码...)
响应头(一大堆K:V键值对)
\r\n
响应体(展示给用户的数据)
# 3.响应状态码
用简单的数字来表示一串中文意思(http协议规定)
1XX:服务端已经接受到你的数据正在处理,你可以继续提交
2XX:200 OK>>>:请求成功
3XX:重定向(原本想访问A但是内部跳到B)
4XX:403当前请求不符合条件 404请求资源不存在
5XX:服务器内部错误
ps:除了上述统一的响应状态码之外,公司还可以自定义自己的状态码
# 4.业务状态码(一般规定一个正确的,只规定200是正确的,其他的全部为异常)
eg:
1、用户名不存在
2、验证码错误
1)随机生成
2)校验验证码
存入验证码到数据库(MySQL),表结构
id code phone create_time
1 123456 110 2021-10-01 10:10:10
2 123457 110 2021-10-01 11:10:10
3 123458 110 2021-10-01 12:10:10
通过表结构可以对一天当中的验证码输错次数做限制
redis也可以存
如果一天当中,不限制发送次数,存到session中
3、密码错误
4、告诉前端用户名不存在,密码错误或验证码错误
json.dumps({})
# 当业务分模块的时候,定义code值,增加数字头,用来识别各个部门
eg:
crm11, 财务12, 销售13, 主站14
def index()
user_dic = {'code':121001, 'msg':'验证码错误', 'data':[]}
user_dic = {'code':121002, 'msg':'用户名不存在', 'data':[]}
user_dic = {'code':121003, 'msg':'密码错误', 'data':[]}