1、接口开发,根据不同查询条件返回数据库查询结果

import flask
import tools
import json server = flask.Flask(__name__)
#新建一个服务,把当前这个python文件当做一个服务 @server.route('/api/stu')
def get_stu():
"""
获取学生信息接口
:return: 返回从数据库中查询到符合查询条件的信息
"""
username = flask.request.values.get('name') # 默认get不到的话,返回的值就是None
age = flask.request.values.get('age')
if username and age: # 判断用户名和密码都存在
# 用户名和密码符合条件的
sql = "select * from app_student where name='%s' and age='%s'" % (username, age)
elif not username and age: # 用户名为空,查询符合年龄条件的数据
sql = "select * from app_student where age='%s'" % age
elif username and not age: # 年龄为空,查询符合用户名条件的数据
sql = "select * from app_student where name='%s'" % username
else: # 没有搜索条件,默认返回所有数据
sql = "select * from app_student"
res = tools.my_db2(sql) # 调用tools中的my_db2函数,执行sql语句,返回查询结果
# 返回执行结果,将结果转成json格式
return json.dumps(res,ensure_ascii=False,indent=4) server.run(host='0.0.0.0', port=8999, debug=True)

2、接口开发 返回session_id

import json
import time
import tools
import flask
server = flask.Flask(__name__) import nnlog # 1、导入第三方模块nnlog
log = nnlog.Logger('book_server.log') # 添加一个日志文件 @server.route('/api/login',methods=['get','post']) # 接口访问既可以用get方法也可以用post方法
def login():
"""
登录接口,返回session_id 日志打印
:return:
"""
uname = flask.request.values.get('username')
pd = flask.request.values.get('passwd')
sql = 'select * from app_myuser where username="%s"'%uname
log.debug('登录执行的sql是:%s'%sql)
res = tools.my_db(sql) # 调用tools下的my_db函数,返回符合查询条件的一条结果
if res: # 查询结果存在
if tools.my_md5(pd) == res.get('passwd'): # 判断密码是否正确
# 调用tools下的my_md5函数对用户名进行加密
# 因为使用用户名MD5加密后,每一次失效后加密的结果还是一样的,
# 所以在用户名后面 拼了一个当前时间戳str(time.time()
uname_md5 = tools.my_md5(uname+str(time.time()))
# uname_md5 = tools.my_md5(uname)
key='session:%s'%(uname_md5) # redis中的key值就是加密后的用户名
# redis中的value值 字典格式
user_info = {'user_id':res.get('id'),'user_name':uname}
r = tools.get_redis() # 调用tools下的连接redis函数 连接redis
log.debug('连接redis成功')
# 将 key值 value值,过期时间写入redis
# 因为user_info是字典格式,需要转换成json串格式才能存入redis
r.set(key,json.dumps(user_info),SESSION_EXPIRE = 60*60*1) #SESSION_EXPIRE 设置过期时间
# 接口返回的结果都是json的格式
# 在结果中返回相应的数据,返回
# 'login_time':time.strftime('%Y-%m-%d %H:%M:%S') 以格式化好的时间打印当前时间
res = {"code":0,"msg":"登录成功!",'session_id':uname_md5,
'login_time':time.strftime('%Y-%m-%d %H:%M:%S')}
log.warning('%s 用户登陆成功'%uname)
else: # 密码不正确时返回的结果
res = {"code":1,"msg":"密码错误!"}
else: # 查询结果不存在
log.warning('%s用户不存在'%uname)
res = {'code':2,"msg":"用户不存在"} # 返回的结果res是字典格式,需要转化成json格式
return json.dumps(res,ensure_ascii=False)

3、写一个校验session_id的函数,供后面的每个接口校验session_id使用

from . import tools
import json
def check_session(session_id):
"""
校验session是否过期
:param session_id: 传入的session
:return: session是否过期,返回session_id
"""
session_tag = False # SESSION是否失效的标识
r = tools.get_redis() # 连接redis
# 从redis中获取session_id,因为存的时候前面加了 session: ,所以获取的时候也得在前面加上
res = r.get('session:'+session_id)
if res: # 判断是否存在session_id
session_tag = True # 将session_tag 置为True,表示session还没有失效
data = json.loads(res) # 把json转成字典
else: # 不存在session_id 让用户重新登录
data = {'code':4,'msg':'请登录!'}
return session_tag,data # 返回两个参数,一个session_id是否过期,一个返回

8-1 python 接口开发(提供数据、返回session_id)的更多相关文章

  1. 7-4 python 接口开发(提供mock服务)

    1.登录接口开发(数据存在数据库中)  接口开发做mock(模拟功能) tools.py import pymysql def my_db(sql): conn = pymysql.connect(h ...

  2. Python接口开发小知识

    关于数据库设计 接口开发多学习数据库表操作,这是要点 不存在删除数据,每个可能被删除数据的表加一个is_active属性 不同的表可以有多个相同的字段,字段属性少用禁止非空 不要设置太多主外键(高内聚 ...

  3. Python接口开发

    一.flask flask是一个python编写的轻量级框架,可以使用它实现一个网站.web服务. 用flask开发接口的流程为: 1.定义一个server server=flask.Flask(__ ...

  4. python 接口开发(一)

    cmd中,提示pip版本太低,先升级pip   pip install --upgrade pip (pip,安装和管理python扩展包的工具) cmd下,pip,出现详细信息证明装成功了 pip ...

  5. 每天进步一点点——Ganglia的Python扩展模块开发

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/39701245 注:本文涉及到的代码都在centos 6.5 64bit系统上通过验证,Gan ...

  6. python语言(六)mock接口开发、发邮件、写日志、新Excel操作

    一.urllib模块 urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. url ...

  7. Python(七) —— mock接口开发

    mock接口开发 接口开发有很多框架,诸如 Django,flask,相比较而言,flask 是轻量级web开发框架,用来开发 mock 接口的不二之选.那你可能会问,什么叫 mock 接口呢?moc ...

  8. 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言

    前    言 本书的原型是我整理一份Django学习文档,从事软件测试工作的这六.七年来,一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮 ...

  9. python之接口开发基础知识

    一.开发接口的作用 1.mock 服务:在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,模拟支付成功.支付失败. 2.了解接口是如何实现的:数据交互.数据返回 ...

随机推荐

  1. pat1025. PAT Ranking (25)

    1025. PAT Ranking (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Programmi ...

  2. netty之==TCP粘包/拆包问题解决之道(一)

    一.TCP粘包/拆包是什么 TCP是一个“流”协议,所谓流,就是没有界限的一长串二进制数据.TCP作为传输层协议并不不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的划分,所以在 ...

  3. 拼json对象批量向后台添加数据

    网站中如果遇到批量提交格式相同数据,可以使用json来传输 $("#catalogSave").click(function(){ var array=[]; $("[n ...

  4. 通用代码——makefile文件

    ver=debug ifeq ($(ver),debug) TARGET = testmain_d FLAG=-g -D debug else TARGET = testmain_r FLAG=-O3 ...

  5. vue的组件传输

    vue的组件传输有四种,我个人觉得pubsub(订阅/发布)是最好用的,因为他不用去考虑关系,所以我们下面就只讲解pubsub吧 1) 优点: 此方式可实现任意关系组件间通信(数据)   首先我们需要 ...

  6. centos系统安装mysql

    方式一. 通过yum install mysql-server安装mysql服务器.chkconfig mysqld on设置开机启动,并service mysqld start启动mysql服务,并 ...

  7. spring mvc改造成spring boot

    一.新增依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  8. XHML教会我的一些东西-4

    今天把“河畔林语”的项目看完了.我自己也试着做了一下,这算是自己写的第一个项目吧.虽然全部是模仿,而且经常一边看写好的一边自己写,还是自己不够成熟呀. 不知道为什么,我用我的电脑进http://www ...

  9. <Android 基础(十三)> shape

    介绍 简单来说,shape就是用来在xml文件中定义形状,代码解析之后就可以当做Drawable一样使用 官方说明 关于shape定义的drawable 文件位置:res/drawable/filen ...

  10. 某地理位置模拟APP从壳流程分析到破解

    工具与环境 Xposed IDA 6.8 JEB 2.2.5 Fiddler2 010Editor NEXUS 5  Android 4.4 好久不玩逆向怕调试器生锈,拿出来磨磨! 高手莫要见笑,仅供 ...