zoukankan      html  css  js  c++  java
  • day08-接口传cookie

      接口在使用时经常前后的接口是相互关联的,比如一般后续接口的操作,必须是在登录之后才可以进行。这里举一个例子就是接口之间cookie信息传递的例子。

      同样的使用文件来各自存放python文件,其中bin存放启动文件、config 存放数据库或服务的配置文件、data放sql执行文件、lib放工具库文件和接口文件、log放日志文件,还有最后一个说明文件。

      bin目录下放启动文件 start.py

      import sys,os

      BATH_PATH=os.path.dirname(os.path.dirname(os.opath.abspath(__file__)))    #获取接口文件的最上级目录

      sys.path.insert(0,BATH_PATH)  #把这个路径添加到python的配置文件中去.

      config目录下的setting.py

      

    MYSQL_INFO = {
    'host':'xx.xx.xx.xx', #ip
    'user':'jxz', #用户
    'passwd':'123456', #密码
    'db':'jxz', #数据库
    'charset':'utf8', #字符集
    'port':3306 #端口号
    }#mysql的配置信息


    REDIS_INFO = {
    'host':'xx.xx.x.xx', #ip,
    'password':'HK139bc&*',#密码
    'port':6379, #端口号
    'db':1#第几个数据库
    }
    #redis的配置信息

    SERVER_PORT = 8989 #服务的端口号

    lib目录下的interface.py以及tools.py

    import redis,pymysql,hashlib
    #pycharm帮你加环境变量
    from config.setting import MYSQL_INFO,REDIS_INFO

    def my_db(sql):
    try:
    coon = pymysql.connect( **MYSQL_INFO )
    except Exception as e:
    print('数据库连接失败')
    return '数据库连接失败'
    cur = coon.cursor() #建立游标
    try:
    cur.execute(sql)#执行sql
    except Exception as res:
    print('sql出错,sql是%s'%sql)
    else:#没有出错
    if sql.strip()[:6].upper()=='SELECT':
    res = cur.fetchall()
    else:
    coon.commit()
    res = 'ok'
    finally:
    cur.close()
    coon.close()
    return res

     

    def op_redis(k,v=None,time=None):
    r = redis.Redis(**REDIS_INFO)

    if v and time:
    r.set(k,v,time)
    res = 'ok'
    else:
    res = r.get(k)
    if res:
    res = res.decode()
    return res

    def my_md5(s):
    md = hashlib.md5()
    md.update( s.encode() )
    return md.hexdigest()

     

    interface接口:

    import flask,time,json
    from lib import tools
    server = flask.Flask(__name__)

    @server.route('/login',methods=['get'])
    def login():
    username = flask.request.values.get('username')
    pwd = flask.request.values.get('pwd')
    if username == 'nhy' and pwd=='123456':
    session_id = tools.my_md5(username+time.strftime('%Y%m%d%H%M%S'))
    key = 'txz_session:%s'%username
    tools.my_redis(key,session_id,600)
    res = {'session_id':session_id,'error_code':0,'msg':'登录成功',
    'login_time':time.strftime('%Y%m%d%H%M%S') } #给用户返回的信息
    json_res = json.dumps(res,ensure_ascii=False)#返回结果弄成json
    res = flask.make_response(json_res) #构造成返回结果的对象
    res.set_cookie(key,session_id,3600) #最后的数字是cookie的失效时间。
    return res

    @server.route('/posts')
    def posts():
    cookies = flask.request.cookies #所有的cokies
    username = '' #
    session = ''#定义这两个变量是为了,在没有传cookie的时候用的。
    for key,value in cookies.items():
    if key.startswith('txz_session'): #判断cookie以txz_session开头的话,取到它
    username = key
    session = value #调用接口的时候用户传过的seesion,从cookie里面取过来的

    redis_session = tools.my_redis(username) #从redis里面获取到的的cookie

    if redis_session == session: #判断传过来的seeion和redis里面的session一样
    title = flask.request.values.get('title')#获取文章标题
    conent = flask.request.values.get('content')#获取文章内容
    article_key ='article:%s'%title #key都以article开头
    tools.my_redis(article_key,conent) #把文章写入redis
    res = {'msg':'文章发表成功!','code':0}
    else:
    res = {'msg':'用户未登录!','code':2009}

    return json.dumps(res,ensure_ascii=False)


    二、搭建环境的步骤:
      1、要先申请服务器,windows/linux/
      2、安装环境依赖的进本软件
        jdk 数据库 tomcat nginx apache 等
      3、下载开发提交的程序
      4、在数据库导入基本数据,导入sql
      5、修改程序的配置文件
      6、运行程序了
  • 相关阅读:
    猴子搬香蕉问题
    IE浏览器上传文件后返回结果会自动弹出下载框
    webstorm忽略node_modules目录
    webstorm中sass编译时目录或内容包含中文字符报错
    echarts实现自动轮播tooltip
    IIS处理并发请求时出现的问题及解决
    Zuul 2.1.5 设计分析
    基于 Canal 设计可扩展、高可用 binlog 同步集群
    k8s-coredns内部解析
    Istio使用Envoy转发Http请求错误码426 Upgrade Required
  • 原文地址:https://www.cnblogs.com/zpbk1991/p/9048571.html
Copyright © 2011-2022 走看看