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)
扫描二维码关注公众号,回复: 1769607 查看本文章

猜你喜欢

转载自www.cnblogs.com/L-Test/p/9230585.html