什麼是接口:接口泛指實體把本身提供給外界的一種抽象化物(能夠爲另外一實體),用以由內部操做分離出外部溝通方法,使其能被內部修改而不影響外界其餘實體與其交互的方式。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)