• 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环境变量
  • 相关阅读:
    VS2005进行WAP开发中的控件排列问题
    WAP中图像列表的设计
    List分页存在的问题
    vs.net2005下的WAP开发之设备仿真器
    用户控件中RedirectToMobilePage的使用
    ASP.NET网站发布问题
    asp.net开发WAP时表单提交的问题及粗略的解决
    如何在objectlist上显示两个字段的连接??
    VS2008 快捷键大全
    [翻译]25招改善你的jQuery [2]
  • 原文地址:https://www.cnblogs.com/L-Test/p/9230585.html
Copyright © 2020-2023  润新知