# 人脸识别系统 API 接口文档 本文档详细说明了人脸识别系统的后端业务接口与算法服务接口,供开发人员集成使用。 ## 1. 系统业务接口 (Java Backend) 后端服务主要提供分组管理和人员信息管理功能。所有接口统一通过 HTTP 协议调用,返回 JSON 格式数据。 **基础路径**: `/api` (例如: `http://:/api`) ### 1.1 分组管理 #### 1.1.1 创建/添加分组 * **接口地址**: `/groups/add` * **请求方式**: `POST` * **请求类型**: `application/json` * **请求参数**: | 参数名 | 类型 | 必填 | 说明 | | :--- | :--- | :--- | :--- | | name | String | 是 | 分组名称 | | description | String | 否 | 分组描述 (如果有) | **请求示例**: ```json { "name": "VIP人员", "description": "重要客户分组" } ``` * **返回结果**: ```json { "code": 200, "msg": "success", "data": { "id": 1, "name": "VIP人员", "createTime": "2023-12-30T10:00:00" } } ``` #### 1.1.2 获取分组列表 * **接口地址**: `/groups/list` * **请求方式**: `GET` * **返回结果**: ```json { "code": 200, "msg": "success", "data": [ { "id": 1, "name": "默认分组" }, { "id": 2, "name": "员工分组" } ] } ``` --- ### 1.2 人员管理 #### 1.2.1 新增人员 (带照片) 该接口用于注册新用户,同时上传人脸照片用于提取特征。 * **接口地址**: `/users/add` * **请求方式**: `POST` * **请求类型**: `multipart/form-data` (表单上传) * **请求参数**: | 参数名 | 类型 | 必填 | 说明 | | :--- | :--- | :--- | :--- | | name | String | 是 | 人员姓名 | | groupId | Long | 否 | 所属分组ID | | photo | File | 是 | 人脸照片文件 (jpg/png) | * **返回结果**: ```json { "code": 200, "msg": "success", "data": { "id": 101, "name": "张三", "groupId": 2, "feature": "..." // (内部可能不直接返回长特征,视具体实现而定) } } ``` #### 1.2.2 编辑人员信息 用于更新人员姓名、分组或重新上传人脸照片。 * **接口地址**: `/users/update/{id}` * **请求方式**: `POST` * **请求类型**: `multipart/form-data` * **路径参数**: * `id`: 人员ID (Long) * **请求参数**: | 参数名 | 类型 | 必填 | 说明 | | :--- | :--- | :--- | :--- | | name | String | 是 | 人员姓名 | | groupId | Long | 否 | 所属分组ID (不传则不修改) | | photo | File | 否 | 新的人脸照片 (不传则不修改) | * **返回结果**: ```json { "code": 200, "msg": "success", "data": { ... } } ``` #### 1.2.3 获取人员列表 (查询) * **接口地址**: `/users/list` * **请求方式**: `GET` * **请求参数**: | 参数名 | 类型 | 必填 | 说明 | | :--- | :--- | :--- | :--- | | name | String | 否 | 按姓名模糊查询 | | groupId | Long | 否 | 按分组ID筛选 | * **返回结果**: ```json { "code": 200, "msg": "success", "data": [ ...User Objects... ] } ``` #### 1.2.4 人脸搜索 (1:N 检索) 用于上传一张人脸照片,并在指定分组内检索最相似的人员。 * **接口地址**: `/users/search` * **请求方式**: `POST` * **请求类型**: `multipart/form-data` * **请求参数**: | 参数名 | 类型 | 必填 | 说明 | | :--- | :--- | :--- | :--- | | photo | File | 是 | 待检索的人脸照片 | | groupId | Long | 是 | 目标分组ID | * **返回结果**: **成功找到匹配**: ```json { "code": 200, "msg": "success", "data": { "id": 101, "name": "张三", "groupId": 2, ... } } ``` **未找到匹配 (相似度低于阈值 0.6)**: ```json { "code": 404, "msg": "未找到匹配用户" } ``` --- ## 2. 算法服务接口 (Python - FaceFeatureExtractor) 该接口通常由 Java 后端内部调用,但如果开发人员需要独立调试算法或进行集成,可直接调用该微服务。 **功能**: 接收图片,进行质量检测(人脸检测、模糊度、亮度、姿态等),合格后提取 1024 维人脸特征向量。 **默认端口**: `8000` (具体取决于 docker-compose 配置) ### 2.1 提取人脸特征 * **接口地址**: `/api/extract_feature` * **请求方式**: `POST` * **请求类型**: `multipart/form-data` * **请求参数**: | 参数名 | 类型 | 必填 | 说明 | | :--- | :--- | :--- | :--- | | image | File | 是 | 图片文件 (支持 jpg, png 等常见格式) | * **返回结果 (JSON)**: **成功响应**: ```json { "success": true, "message": "Success", "feature": [0.123, -0.456, ...], // 1024维浮点数组 "feature_dim": 1024, "processing_time": 0.045 } ``` **失败/质量不合格响应**: ```json { "success": false, "message": "No face detected" // 或 "Face quality check failed...", "Server error..." } ``` ### 2.2 健康检查 * **接口地址**: `/health` * **请求方式**: `GET` * **返回结果**: `{"status": "healthy", "service": "Face Feature Extractor"}`