python简说(二十一)开发接口
一.flask举例
import flask
server = flask.Flask(__name__)
#新建一个服务,把当前这个python文件当做一个服务
@server.route('/login',methods=['get'])
def hello():
uname = flask.request.values.get('username')
pd = flask.request.values.get('passwd')
sql = 'select * from app_myuser where username="%s"'%uname
res = tools.my_db(sql)
if res:
if tools.my_md5(pd) == res.get('passwd'):
res = {"code":0,"msg":"登录成功!"}
else:
res = {"code":1,"msg":"密码错误!"}
else:
res = {'code':2,"msg":"用户不存在"}
return json.dumps(res,ensure_ascii=False,indent=4)
server.run()
二.按条件查询
@server.route('/api/stu')
def get_stu():
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)
return json.dumps(res,ensure_ascii=False,indent=4)
三.带session的接口
@server.route('/api/login',methods=['get','post'])
def login():
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)
if res:
if tools.my_md5(pd) == res.get('passwd'):
uname_md5 = tools.my_md5(uname+str(time.time()))
# uname_md5 = tools.my_md5(uname)
key='session:%s'%(uname_md5)
user_info = {'user_id':res.get('id'),'user_name':uname}
r = tools.get_redis()
log.debug('连接redis成功')
r.set(key,json.dumps(user_info),setting.SESSION_EXPIRE)
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":"用户不存在"}
return json.dumps(res,ensure_ascii=False)
四.入参是json
@server.route('/api/add_stu',methods=['post'])
def add_stu():
if flask.request.is_json:
session_id = flask.request.json.get('session_id')
name= flask.request.json.get('name')
phone = flask.request.json.get('phone')
grade = flask.request.json.get('grade')
addr = flask.request.json.get('addr','北京')
sex = flask.request.json.get('sex','男')
age = flask.request.json.get('age',18)
gold = flask.request.json.get('gold',1000)
if session_id and name and phone and grade:
login_tag , data = check_session(session_id)
if login_tag:
insert_sql="insert into `jxz`.`app_student` ( `name`, `sex`," \
" `age`, `addr`, `grade`, `phone`, `gold`)" \
" values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s');"%(name,sex,age,addr,grade,phone,gold)
tools.my_db(insert_sql)
res = {'code':0,'msg':'学生信息添加成功'}
else:
res = data else:
res = {'code':3,'msg':'必填参数未填,请查看接口文档!'}
else:
res = {'code':5,'msg':'入参是json类型的!'}
return json.dumps(res, ensure_ascii=False)
五.上传文件
@server.route('/api/upload',methods=['post'])
def upload():
session_id = flask.request.values.get('session_id')
file = flask.request.files.get('file_name')
if session_id and file:
login_tag, data = check_session(session_id)
if login_tag:
new_file_name = '%s_%s'%(int(time.time()),file.filename)
#防止文件名重复,所以把文件名前面加上了时间戳
abs_file_path = os.path.join(setting.UPLOAD_DIR,new_file_name)
#拼文件的绝对路径,这样子就放到了uploads目录下
file.save(abs_file_path)#保存文件
res = {'code':0,'msg':'上传文件成功!'}
else:
res = data
else:
res = {'code':3,'msg':'必填参数未填,请查看接口文档!'}
return json.dumps(res, ensure_ascii=False)
python简说(二十一)开发接口的更多相关文章
- EasyDSS点播与直播服务器软件-二次开发接口对接说明示列
EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作.其中,点播版本主要包含:上传.转码.分发.直播版本,主要包含:直播.录像, 直播支持RTMP输 ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件二次开发接口对接说明示列
EasyDSS相关功能 EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作.其中,点播版本主要包含:上传.转码.分发.直播版本主要包含:直播.录像 ...
- Python什么是二次开发的意义?python在.net项目采用
任何人都知道python在.net该项目是做什么的啊? 辅助用途,用作"二次开发"..net站点的话python主要是CGI才用.能够用python编写B/S程序. 解释一下二次开 ...
- Autocad中使用命令来调用python对Autocad二次开发打包后的exe程序
在Autocad中直接调用Python二次开发程序是有必要的,下面介绍一种方法来实现这个功能: 其基本思路是:先将二次开发的程序打包为可执行程序exe,然后编写lsp文件,该文件写入调用exe程序的语 ...
- Python学习(二十一) —— 前端之JavaScript
转载自http://www.cnblogs.com/liwenzhou/p/8004649.html 一.JavaScript概述 1.JavaScript的历史 1992年Nombas开发出C-mi ...
- python之saltstack二次开发
一.salt的概念 salt是一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行).一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选 ...
- Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)
一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...
- Python学习日记(二十五) 接口类、抽象类、多态
接口类 继承有两种用途:继承基类的方法,并且做出自己的改变或扩展(代码重用)和声明某个子类兼容于某基类,定义一个接口类interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子 ...
- python之路二十一
URL - 两个 Views - 请求的其他信息 from django.core.handlers.wsgi import WSGIRequest ...
- SkylineGlobe 如何使用二次开发接口创建粒子效果
SkylineGlobe在6.6版本,ICreator66接口新增加了CreateEffect方法,用来创建粒子效果对象: 以及ITerrainEffect66对象接口,可以灵活设置粒子效果对象的相关 ...
随机推荐
- What is the reason for - java.security.spec.InvalidKeySpecException: Unknown KeySpec type: java.security.spec.ECPublicKeySpec
支付中心Project重构完成,经过本地测试,并未发现问题.发布到测试环境后,测试发现请求光大扫码https接口时,出现了如下的异常: javax.net.ssl.SSLException: Serv ...
- ASP.Net Core 2.2 MVC入门到基本使用系列 (三)(转)
本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...
- Django配置xadmin后台模板之坑(一)
环境: Python3.6 + Django2.0 + xadmin2.0 一.安装 1.首先安装就会有一个坑,很多教程的安装是直接在虚拟环境下使用 pip install xadmin 或者 pip ...
- JavaScript-switch-case运用-案例
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Nodejs【单机】多进程模式集群
Nodejs[单机]多进程模式集群实例: 1.安装:npm install -s cluster 2.服务代码: var debug = require('debug'); var express = ...
- Eclipse 在Debug调试中用到的快捷键
作用域 功能 快捷键 全局 单步返回 F7 全局 单步跳过 F6 全局 单步跳入 F5 全局 单步跳入选择 Ctrl+F5 全局 调试上次启动 F11 全局 继续 F8 全局 使用过滤器单步执行 Sh ...
- (转)使用yuicompressor-maven-plugin压缩js及css文件(二)
本文介绍通过使用yuicompressor-maven-plugin插件实现js及css代码的自动压缩,方便集成到持续集成环境中,如jenkins. 一.配置yuicompressor-maven-p ...
- leetcode insertionSortList 对链表进行插入排序
描述: Sort a linked list using insertion sort. 使用插入排序对一个链表进行排序 普通的插入排序,时间复杂度O(n^2) class Solution { pu ...
- Python 6 -- 构建一个Web应用
用Flask Web框架,实现浏览器页面交互.在此之前需要了解web的基本工作流程,可参照https://blog.csdn.net/m0_37466453/article/details/72752 ...
- Permutation Bo (数学证明)
当在两端时:共有n * (n - 1)种组合,满足条件的有,计算可得, counter = n * (n - 1) / 2. 其他位置时:共有n * (n - 1) * (n - 2) 种组合,满足条 ...