python(接口測試與flask框架)

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