通過rest接口評估算法可用性

rest的簡單理解: 

在使用之前,先簡單的瞭解下rest:

大家都知道”古代”網頁都是前端後端融在一起的,比如之前的PHP,JSP等。在之前的桌面時代問題不大, 但是近年來移動互聯網的發展,各種類型的Client層出不窮,這就催促了rest的誕生。

REST 近年來已經成爲最主要的 Web 服務設計模式,它是一種軟件架構風格,但不是一套標準,它用來規範應用如何在http層與API提供方進行數據交互,其好處在於其爲面向資源的URL(即http請求路徑),rest規定中要求URL各層只能用名詞不能用動詞,這樣相比於傳統的get請求有利於傳輸數據的穩定性,數據的操作流程不會輕易被人看破,也便於團隊開發,各種url一目瞭然。

實例:

有了上面對rest的簡單理解,那我們再看一個應用的比較常見的例子。

像測試人臉識別算法的識別率,剛開始時自己無從下手,然後經過向大佬請教,直接讓開發暴露出了一個rest接口給了我,通過此rest接口返回的數據,分析評估其是否可用,接下來就簡單說一下我的做法:

首先,收集照片,case裏的滿足各種條件的照片,放置於不同的文件目錄下;

然後,與開發對過或者查看接口文檔中的傳參,弄清傳參格式。這裏講述的是一個簡單的只傳了base64格式的照片形式,遍歷文件夾下的圖片,然後將圖片形式寫成base64格式,代碼如下:

# coding=utf-8

import requests
import os
import cv2
import base64
    
def get_facename(self, file_path):
        list_name = []
        file_names = os.listdir(file_path)
        for file_name in file_names:
            if os.path.isfile(os.path.join(file_path, file_name)):
                list_name.append(file_name)
        return list_name

def get_img_base64(self, file_path):
        list_base64 = []
        for file_name in Aaf().get_facename(file_path):
            img = cv2.imread(file_path + file_name)
            img_str = cv2.imencode('.jpg', img)[1].tostring()
            img_base64 = base64.b64encode(img_str)
            # print img_base64
            list_base64.append(img_base64)
        return list_base64

然後,將圖片編碼之後的base64格式導入到接口中(即多次請求這個接口)。

def face_att(self, file_path, post_url):
        for img in Aaf().get_img_base64(file_path):
           
            payload = {"image":str(img),"AAA":"aaa","BBB":"bbb" }
            headers = {
                #響應頭,可寫可不寫
                "Cache-control":"no-cache"
            }
            try:
                response = requests.request("POST", url, data=payload, headers=headers)
                print response.text
            except Exception as error:
                print error

if __name__ == '__main__':
    path = '照片所在目錄'
    url = "調接口的網址"
    Aaf().face_att(path, url)

最後,輸出的信息例如如下:可以按照自己的需求來進行分析數據。

{
    "code":0000,
    "isattack":false,
    "msg":"****",
    "":"",
    "":""
.....
}

下面是大體流程圖:

總結:

前期準備數據,瞭解需求;然後請求rest接口,遍歷各個文件下的照片,將照片轉成base64形式,再把這些參數傳進入接口,進行多次重複調用;再根據是否需要在同一個局域網內才能完成,因爲之前都是在測試環境,故將服務器與本機組到了同一個局域網中;最後自己是通過解析得到的數據結果(json數據),取到code碼、以及msg的具體說明和isattsck的值,根據不同的code碼值寫到不同的文件裏,進行分析,得出通過率與誤識率,然後評估此算法的優劣,再決定此算法是否可以用到實際的業務中,比如人臉打卡業務等等。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章