1、开发接口的做用python
1.在别的接口没有完成的时候能够模拟一些接口以便测试已经开发完成的接口,例如假的支付接口模拟支付成功、支付失败mysql
2.了解接口是如何实现的,数据交互,数据返回sql
3.开发给别人看数据,避免其余人直接操做数据库数据库
2、接口开发的步骤json
1.实例化serverflask
2.装饰器下面的函数变为一个接口浏览器
33.启动服务app
3、开发一个简单的接口函数
首先要引入flask这个模块,没安装须要安装(pip install flask)post
写一个简单的注册接口
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访问
在浏览器里访问上述代码,获得以下结果
4、开发一个登陆接口
1 import flask,json 2 from lib.tools import mysql#引入提早写好的模块,操做数据库 4 server = flask.Flask(__name__)# 启动服务,把当前的Python文件当作一个服务 5 @server.route('/dalu',methods=['get','post'])# /dalu是接口路径,methods不写,默认是get请求 6 # 装饰器,下面的函数变为一个接口 7 def login(): 8 username = flask.request.values.get("username")# 接口入参为 username 9 passwd = flask.request.values.get("password") 10 if username and passwd: 11 sql = "select username,passwd from app_student " \ 12 "where username =%s,password =%s"%(username,passwd) 13 if mysql(sql): 14 res = {"msg_code":2001,"msg":"用户已存在"} 15 else: 16 insert_sql = "insert into app_student(username,passwd) " \ 17 "values ('%s','%s');"%(username,passwd) 18 mysql(insert_sql) 19 res = {"msg_code":2000,"msg":"注册成功"} 20 else: 21 res = {"msg_code": 2002, "msg": "必填参数未填,请查看接口文档"} 22 23 return json.dumps(res,ensure_ascii=False)# 返回执行结果 24 25 server.run(host = '0.0.0.0',port = 8888,debug = True) 26 # 启动服务,debug=Ture改了代码后不用重启,他会自动重启 27 # host = '0.0.0.0',别人能够经过IP访问,限同一局域网内
一个接口文件中能够包含多个接口,只要接口路径不一致便可。可是server.run()必定要放到全部接口最底下,不然,在server.run()下面的接口是不会被运行的。
另外,若是想要在别的环境里运行咱们的接口,则须要将接口所在的路径添加至环境变量,具体代码实现以下:
1 import os,sys 2 res = os.path.abspath(__file__)# 取当前文件的绝对路径 3 base_path = os.path.dirname(os.path.dirname(res))# 获取父目录 4 sys.path.append(base_path)#将接口所在的父目录添加至环境变量
未完待补充。。