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、运行程序了

猜你喜欢

转载自www.cnblogs.com/zpbk1991/p/9048571.html
今日推荐