接口在使用时经常前后的接口是相互关联的,比如一般后续接口的操作,必须是在登录之后才可以进行。这里举一个例子就是接口之间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、运行程序了