什么是接口:接口泛指实体把本身提供给外界的一种抽象化物(能够为另外一实体),用以由内部操做分离出外部沟通方法,使其能被内部修改而不影响外界其余实体与其交互的方式。html
mock接口 :就是模拟接口。python
使用flask模块进行接口开发mysql
web服务实际上是:1.启动一个服务,2接收客户端传过来的数据,3,登陆,注册,删除,上传,修改,等数据,4返回数据信息。git
返回时间接口web
import flask,datetime#导入flask,和时间模块 server = flask.Flask(__name__)#做为一个服务 @server.route("/cc")#括号里写的是访问时的路径地址 def get_time(): now = str(datetime.datetime.now()) return "如今时间是:%s"%now server.run(host="0.0.0.0",port=8888,debug=True)#启动服务,host写成0.0.0.同一个局域网能够访问,debug=True重启服务
跳转到个人网页接口sql
1.先好html网页,在写接口进行跳转数据库
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>个人网站</title> </head> <body> <input type="text" placeholder="请输入你的帐号"> <input type="password" placeholder="请输入你的密码"> <input type="button" value="提交"> <div style="width: 80px;height: 80px;background-color: green" > </div> <a href="http://www.baidu.com">点我</a> </body> </html>
import flask #导入flask server = flask.Flask(__name__) #做为一个服务 @server.route("/index") #括号里写的是访问时的路径地址,必须已/开头 def my_page(): f = open('index.html',encoding='utf-8') #打开网页为index.html的网页 #文件必须放在同级目录下,否则会出错,或者直接写文件的绝对路径 res = f.read() #读取 f.close() #关闭 return res server.run(port=8888)#启动服务
登陆接口json
flask获取请求参数、链接数据库一、传参,二、执行sql查数据库(已有该表)三、返回结果flask
import flask #导入flask server = flask.Flask(__name__) #做为一个服务 def login(): #登陆须要两个参数,name和pwd uname=flask.request.values.get('username')# 传参,前面的是变量,括号里面是key passwd=flask.request.values.get('password') # args 这个方法就只能获取到url里面传的参数 # values 这个方法无论你是url里面传的参数仍是,k-v传的,均可以获取到的 if uname and passwd:# 非空为真 # 须要先写一个导入数据库的函数,例如我写了一个名称为tools的函数(如图),放在另外一个python文件中,import tools进行调用。固然也能够直接写在本python文件中,可是显得会累赘。 sql="SELECT * FROM app_myuser WHERE username='%s' AND passwd='%s';"%(uname,passwd) result = tools.my_db(sql)#执行sql if result: res={"error_code":1000,"mag":"登陆成功"} # 接口返回的都是json,因此要这样写。先导入json模块,import json。 else: res = {"error_code": 3001, "mag": "帐号或密码错误!"} else: res={"error_code":3000,"mag":"必填参数未填,请查看接口文档!"} return json.dumps(res,ensure_ascii=False) #防止出现乱码;json.dumps()函数是将字典转化为字符串 server.run(port=8888)
import pymysql def my_db(sql): conn=pymysql.connect( host='xxx.xxx.xxx.xx',#数据库地址 user='xxx', #用户名 password='123456',#密码 db='jxz', #数据库名 charset='utf8', autocommit=True# 自动提交 ) cur=conn.cursor(cursor=pymysql.cursors.DictCursor)# 创建游标;默认返回二维数组,DictCursor指定返回字典; cur.execute(sql)#execute帮你执行sql res=cur.fetchall()#拿到所有sql执行结果 cur.close()# 关闭游标 conn.close()# 关闭数据库 return res # 返回sql执行的结果
新增用户接口数组
1.flask获取请求参数、2.链接数据库;3.入参是json类型,参数有限制,4.sql语句新增用户
import flask,json,tools #导入flask, tools 存放数据库的操做 server = flask.Flask(__name__) #做为一个服务 @server.route('/add_student',methods=['post']) def add_student(): params=flask.request.json #入参是字典json时用它,下面的代码要判断传入的参数是不是json类型 if params: name=params.get('name') sex=params.get('sex','男')# 若是没有传。默认值是男 age=str(params.get('age'))# int addr=params.get('addr') grade=params.get('grade') phone=str(params.get('phone'))# 最少11位,不能重复 gold=str(params.get('gold',500)) # 金币能够是小数,若是没有传默认是500 if name and age and addr and grade and phone:# 必填参数校验 if sex not in['男','女']: #若是性别不是男或者女 res = {"error_code": 3003, "msg": "性别只能是男或者女"} elif not age.isdigit():# 若是不是整数类型 res = {"error_code": 3004, "msg": "年龄输入错误"} elif len(phone)!=11 or not phone.isdigit(): res = {"error_code": 3005, "msg": "手机号输入错误"} elif not gold.isdigit() and not tools.check.float(gold):#若是不是整数也不是小数 res = {"error_code": 3006, "msg": "金币输入错误"} else: sql="select* from app_student where phone='%s';"%phone #查看数据库中是否有这个手机号,有的话说明重复 result = tools.my_db(sql) # 执行sql if result: res = {"error_code": 1000, "msg": "手机号已经存在"} else: sql = "INSERT INTO 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(sql) res = {"error_code": 200, "msg": "新增成功! "} else: res = {"error_code": 3007, "msg": "必填参数未填写"} else: res={"error_code":3002,"msg":"入参必须是json类型"} return json.dumps(res,ensure_ascii=False)#防止出现乱码 server.run(port=8888)
文件上传接口
import flask,json,datetime #导入flask, tools 存放数据库的操做 server = flask.Flask(__name__) #做为一个服务 def file_upload(): f=flask.request.files.get('wjm',None) # 上传文件,取一个名字,再给名字一个默认值None if f:# 若是文件不为空 cur_time=datetime.datetime.now().strftime("%Y%m%d%H%M%S") # 若是上传同一个文件两次,会被覆盖,因此加一个当前日期,并指定日期格式strftime("%Y%m%d%H%M%S") new_file_name=cur_time+f.filename# 新文件名=时间+原来的文件名 f.save(new_file_name)#保存文件 res={"msg":"文件上传成功"} else: res={"msg":"没有上传文件"} return json.dumps(res,ensure_ascii=False)#防止出现乱码 server.run(port=8888)