通过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码值写到不同的文件里,进行分析,得出通过率与误识率,然后评估此算法的优劣,再决定此算法是否可以用到实际的业务中,比如人脸打卡业务等等。

 

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