Python学习之==>有依赖关系的接口开发
一、接口需求
1、登录接口
(1)登录成功后将session信息存入redis数据库并设置失效时间为600秒
(2)构造返回结果的对象flask.make_response()
(3)产生cookie,失效时间同样设定为600秒
2、发帖接口
(1)根据登录接口成功写入的cookie来判断用户是否登录
(2)判断用户传过来的session和redis数据库中存入的session是否一致
(3)如果一致的话则进行发帖操作
二、代码实现
1 import flask,time,json 2 from lib.tools import my_md5,op_redis 3 server = flask.Flask(__name__) 4 5 @server.route('/login') 6 def login(): 7 username = flask.request.values.get('username') 8 pwd = flask.request.values.get('pwd') 9 if username == 'luolei' and pwd == '123456': 10 session_id = my_md5(username+time.strftime('%Y%m%d%H%M%S')) 11 key = 'session:%s'%username 12 op_redis(key,session_id,600) 13 res = {'sessionid':session_id,'error_code':0,'msg':'登录成功', 14 'login_time':time.strftime('%Y%m%d%H%M%S')}#给用户返回的信息 15 json_res = json.dumps(res,ensure_ascii=False)#返回结果转成json 16 res = flask.make_response(json_res)#构造返回结果的对象 17 res.set_cookie(key,session_id,600)#600是cookie的失效时间 18 return res 19 20 # 有依赖关系的接口 21 # 根据上面登录成功写入的cookie来判断用户是否登录,然后进行发帖操作 22 @server.route('/posts') 23 def posts(): 24 username = '' 25 session = '' # 定义这两个变量是为了在没有传cookie的时候用的 26 cookies = flask.request.cookies # 获取所有的cookie 27 for key,value in cookies.items(): 28 if key.startswith('session:'): # 判断cookie是否以session开头 29 username = key 30 session = value # 调用接口的时候用户传过来的session,从cookie中获取到的 31 redis_session = op_redis(username) # 从redis中获取到的cookie 32 if redis_session == session: # 判断用户传过来的session和redis里面的session是否一样 33 title = flask.request.values.get('title') 34 content = flask.request.values.get('content') 35 article_key = 'article_key:%s'%title 36 op_redis(article_key,content) # 把文章写入redis 37 res = {'msg':'文章发表成功','code':0000} 38 else: 39 res = {'msg':'用户未登录','code':2001} 40 return json.dumps(res,ensure_ascii=False)
三、项目添加环境变量
1 import sys,os 2 os.path.abspath(__file__) # 获取到当前文件的绝对路径 3 os.path.dirname(__file__) # 获取父目录,获取它的上一级目录 4 BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 获取到当前程序的主目录 5 sys.path.insert(0,BASE_PATH) # 将程序主目录加入python环境变量