7-4 python 接口开发(提供mock服务)
1、登录接口开发(数据存在数据库中) 接口开发做mock(模拟功能)
tools.py
import pymysql
def my_db(sql):
conn = pymysql.connect(host='xxx.xx.x.xx',user='jxz',password='',
db='jxz',port=,charset='utf8',autocommit=True)
cur = conn.cursor(pymysql.cursors.DictCursor)
cur.execute(sql)
res = cur.fetchone() #{'username':'nhy'} {}
cur.close()
conn.close()
return res import hashlib
def my_md5(s,salt=''):
s = s+salt
news = str(s).encode()
m = hashlib.md5(news)
return m.hexdigest()
import flask
import tools
import json
server = flask.Flask(__name__)
#新建一个服务,把当前这个python文件当做一个服务 # 装饰器 在参数中传入请求接口 路径 和 方法
# 也可以指定请求方法既可以是get方法也可以是post方法 methods=['get','post']
@server.route('/login',methods=['get'])
def login(): # 定义一个登录的接口
uname = flask.request.values.get('username') # 从请求参数中获取请求参数 username
pd = flask.request.values.get('passwd') # 从请求参数中获取请求参数 passwd
# 从数据库中查询到输入的用户名的所有信息
sql = 'select * from app_myuser where username="%s"'%uname
res = tools.my_db(sql) # 调用tools下的mysql函数,将sql传入进去,获取当前请求用户的一条信息
if res: # 判断如果返回该用户的信息,则执行下面的操作
# 、判断用户密码是否正确
if tools.my_md5(pd) == res.get('passwd'):
# 调用tools下的my_md5函数,将输入的密码进行加密后,跟数据库中返回的passwd密码进行对比
# 如果输入的密码加密后跟数据库中的秘密一直,提示登录成功
res = {"code":,"msg":"登录成功!"}
else: # 如果密码不一致,提示密码错误
res = {"code":,"msg":"密码错误!"}
else: # 如果数据库没有该用户的信息,告知用户不存在
res = {'code':,"msg":"用户不存在"}
return json.dumps(res,ensure_ascii=False,indent=)
# 将结果返回,因为res是从数据库中返回的元组列表格式
# 需要使用json.dumps将字典转成字符串json格式 # 启动一个服务,如果指定host = '127.0.0.1',则只能在本地访问
# 如果指定host = '0.0.0.0' 则只要是一个局域网内的所有电脑使用ip:port/路径都能访问此接口
# 指定启动服务的端口号,如果没有写端口号,则使用默认的端口号
# 指定参数debug=True 则增删改这个服务中的接口时不需要重新启动服务
# 注意:服务只能启动一次,启动多次会报错
server.run(host='0.0.0.0',port=,debug=True)
#ip:/login
#127.0.0.1
2、登录、注册接口开发(数据存在redis中)
import flask
import tools
import json,redis
import random server = flask.Flask(__name__)
#新建一个服务,把当前这个python文件当做一个服务 ip = '118.24.3.40'
password='HK139bc&*'
r = redis.Redis(host=ip,password=password,port=6379,db=10,
decode_responses=True) # 连接redis @server.route('/login',methods=['get'])
def login():
"""
登录接口 数据存在redis中
:return: 返回json格式的登录结果
"""
uname = flask.request.values.get('username')
pd = flask.request.values.get('passwd')
# 定义一个key 'nhy:%s' %unmame key值为从外面输入的用户名,前面加 nhy: 表示在一个nhy的文件夹中
key='nhy:%s'%uname
res = r.get(key) # 从redis中获取的输入的key的值
if res: # 判断如果存在用户名
res = json.loads(res) # 将从redis中获取到的值转换成字典
# 判断输入的密码加密后跟从redis中获取的密码一致
if tools.my_md5(pd) == res.get('passwd'):
res = {"code":0,"msg":"登录成功!"}
else:
res = {"code":1,"msg":"密码错误!"}
else:
res = {'code':2,"msg":"用户不存在"}
# 将返回的结果转换成json字符串格式
return json.dumps(res,ensure_ascii=False,indent=4) @server.route('/reg',methods=['post'])
def reg():
"""
注册接口,将注册信息写入redis中
:return: 返回注册的信息 json格式
"""
uname = flask.request.values.get('username')
pd = flask.request.values.get('passwd')
cpd = flask.request.values.get('cpwd')
key='nhy:%s'%uname # 定义一个key
res = r.get(key) # 获取redis中key的值
if res: # 判断用户是否存在
res = {'code': 2, "msg": "用户已存在"}
else: # 用户不存在
md5_password = tools.my_md5(pd) # 调用tools中的my_md5函数将输入的密码进行加密
# 定义一个字典,需要存入redis中的value值
res = {'id':random.randint(100,9999),'username':uname,'passwd':md5_password,'is_admin':1}
# 将值写入redis中,key为'nhy:%'%uname value值为:res 需要将res转换成json串 因为redis中只能存字符串格式
r.set('nhy:%s'%uname,json.dumps(res))
res = {"code":0,"msg":"注册成功!"}
return json.dumps(res,ensure_ascii=False,indent=4) # 返回res 需要转成json格式 server.run(host='0.0.0.0', port=8999, debug=True)
7-4 python 接口开发(提供mock服务)的更多相关文章
- 8-1 python 接口开发(提供数据、返回session_id)
1.接口开发,根据不同查询条件返回数据库查询结果 import flask import tools import json server = flask.Flask(__name__) #新建一个服 ...
- Python接口开发小知识
关于数据库设计 接口开发多学习数据库表操作,这是要点 不存在删除数据,每个可能被删除数据的表加一个is_active属性 不同的表可以有多个相同的字段,字段属性少用禁止非空 不要设置太多主外键(高内聚 ...
- Python接口开发
一.flask flask是一个python编写的轻量级框架,可以使用它实现一个网站.web服务. 用flask开发接口的流程为: 1.定义一个server server=flask.Flask(__ ...
- python 接口开发(一)
cmd中,提示pip版本太低,先升级pip pip install --upgrade pip (pip,安装和管理python扩展包的工具) cmd下,pip,出现详细信息证明装成功了 pip ...
- 每天进步一点点——Ganglia的Python扩展模块开发
转载请说明出处:http://blog.csdn.net/cywosp/article/details/39701245 注:本文涉及到的代码都在centos 6.5 64bit系统上通过验证,Gan ...
- API 接口开发规范
整体规范建议采用RESTful 方式来实施. 协议 API与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安全. 域名 应该尽量将API部署在专用域名之下.https://api.exam ...
- python语言(六)mock接口开发、发邮件、写日志、新Excel操作
一.urllib模块 urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. url ...
- Python(七) —— mock接口开发
mock接口开发 接口开发有很多框架,诸如 Django,flask,相比较而言,flask 是轻量级web开发框架,用来开发 mock 接口的不二之选.那你可能会问,什么叫 mock 接口呢?moc ...
- python的flex服务端数据接口开发
python的flex服务端数据接口开发 python 如果给flex提供服务端,需要提供一个网关和一个可供客户端(flex)调用的类.这方面我更加推荐用twisted来写这个网关,因为twisted ...
随机推荐
- CSS中的样式层叠机制Cascade
CSS中的样式层叠机制Cascade 一.样式冲突 样式冲突是CSS渲染过程要解决的一个关键问题,样式冲突主要由两个原因造成: 元素包含了不同对象所赋予的样式:浏览器.用户.作者.其中,浏览器样式 ...
- 切片操作:MATLAB VS Python
切片操作:MATLAB VS Python 一.MATLAB 矩阵的拆分 1.冒号表达式: t = e1:e2:e3 e1表示初始值,e2为步长,e3为终止值(包括e3),产生一个从e1到e3,步长为 ...
- 织梦dedecms去除友情链接中的li和span
文件:/include/taglib/flink.lib.php 1.去除友链中的li if(trim($ctag->GetInnerText())=='') $innertext = &quo ...
- jquery的html()、text()、val()的区别和用法
1.html() html()[无参]的使用方法是获取某元素内部的HTML代码,包括各种标签: 例:句1:<p>不知道大家高考的理综试卷里有没有关于科学家及其成就的选择题</p> ...
- redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(多机)
redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(多机) 一.概述 此教程介绍如何在windows系统中多个服务器之间,布置redis哨兵模式(主从复制),同时要以后台服务的模式运行 ...
- Vue.js-创建Vue项目(Vue项目初始化)并不是用Webstrom创建,只是用Webstrom打开
我犯的错误:作为vue小白,并不知道还要单独去创建初始的vue项目,于是自己在webstrom中建了一个Empty Project, 在其中新增了一个js文件,就开始import Vue from “ ...
- Python中的Numpy、SciPy、MatPlotLib安装与配置
Python安装完Numpy,SciPy和MatplotLib后,可以成为非常犀利的科研利器.网上关于这三个库的安装都写得非常不错,但是大部分人遇到的问题并不是如何安装,而是安装好后因为配置不当,在使 ...
- org.apache.xmlbeans.XmlException: error: does not close tag
使用myeclipse的jax自动生成webservice , 或者serviceImpl通过@webservice来实现webservice时, 使用soap UI (我测试使用的版本 5.2.1) ...
- C++指针、引用、const
; int *p = &a; //定义指针p指向变量a *p = ; //*p代表a的值 ; p = &b; //p指向变量b *p = ; //此时*p代表b的值 ] = {,,}; ...
- C4C销售订单行项目价格维护方法
需求很简单,能够创建销售订单,在行项目里添加产品,带出价格来,同时把总价显示在销售订单抬头区域. 如下图所示: 下面是具体配置. Business Configuration里,点击Sales Ord ...