所有文章 > 如何集成API > Python FastAPI 构建安全 REST API 与 YOLOv7 目标检测完整指南
Python FastAPI 构建安全 REST API 与 YOLOv7 目标检测完整指南

Python FastAPI 构建安全 REST API 与 YOLOv7 目标检测完整指南

一. 前言与文章概览

在本文中,我们将逐步讲解如何在 Python 中创建一个安全的 REST API。假设你有一个创新想法,例如利用用户的相机硬件检测照片中的人物,并基于剪影生成趣味内容。本文将指导你实现目标,并构建一个安全且高效的 API


二. 构建 REST API 的思路

在构建 REST API 时,开发者通常面临两种选择:

  • 从零开发:完全自定义 API 架构,更灵活,但开发周期较长。
  • 使用现有框架或服务:快速部署,但可能增加一定成本。

本文将演示如何使用 FastAPI 构建高性能 REST API,同时集成目标检测功能(YOLOv7 模型),满足实际应用需求。


三. 安装 Python 依赖项

1. 创建虚拟环境

在终端中执行以下命令,创建并激活虚拟环境:

python -m venv env
source env/bin/activate  # Windows 用户使用 env\Scripts\activate

激活虚拟环境后,可安装所需依赖项,确保项目环境独立、可控。


四. 使用 FastAPI 构建 REST API

FastAPI 是一款高性能、易扩展的 Python 框架,非常适合构建 REST API。

1. 安装 FastAPI 和 Uvicorn

pip install fastapi uvicorn

2. 创建主程序文件

在项目目录创建 main.py 文件:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Welcome to the FastAPI application!"}

3. 启动服务器

uvicorn main:app --reload --port 8001

访问 http://localhost:8001/ 查看 API 根端点,同时可通过 http://localhost:8001/docs 查看自动生成的 Swagger 文档。


五. 添加目标检测功能

为了实现目标检测,我们将引入 YOLOv7 模型。

1. 安装 YOLOv7 依赖

git clone https://github.com/WongKinYiu/yolov7.git
cd yolov7
pip install -r requirements.txt

2. 添加目标检测端点

main.py 中添加检测逻辑:

from yolov7 import YOLOv7
import time

model = YOLOv7("yolov7.onnx", conf_thres=0.5, iou_thres=0.5)

@app.post("/detect")
def detect_objects(image_url: str):
    start_time = time.time()
    results = model.detect(image_url)
    computation_time = time.time() - start_time
    return {
        "boxes": results["boxes"],
        "scores": results["scores"],
        "classes": results["classes"],
        "computation_time": computation_time
    }

支持通过 URL 或 Base64 上传图像,并返回边界框、置信度分数及类别信息。


六. 添加 API 使用限制

为了防止滥用,可通过令牌验证限制访问权限。

1. 添加令牌验证

from fastapi import Depends, HTTPException

TOKEN = "your_secure_token"

def verify_token(token: str):
    if token != TOKEN:
        raise HTTPException(status_code=403, detail="Invalid token")

@app.post("/detect")
def detect_objects(image_url: str, token: str = Depends(verify_token)):
    # 检测逻辑保持不变
    pass

仅持有正确令牌的用户才能访问目标检测端点,增强 API 安全性。


七. 总结

本文展示了如何使用 FastAPI 构建安全的 Python REST API,并结合 YOLOv7 实现目标检测功能。通过令牌验证机制,我们实现了 API 的访问控制,为进一步开发和扩展提供了可靠基础,无论是用于 MVP 产品还是复杂应用场景。


原文链接

https://lemon.io/blog/how-to-create-a-secure-rest-api-in-python/

#你可能也喜欢这些API文章!

我们有何不同?

API服务商零注册

多API并行试用

数据驱动选型,提升决策效率

查看全部API→
🔥

热门场景实测,选对API

#AI文本生成大模型API

对比大模型API的内容创意新颖性、情感共鸣力、商业转化潜力

25个渠道
一键对比试用API 限时免费

#AI深度推理大模型API

对比大模型API的逻辑推理准确性、分析深度、可视化建议合理性

10个渠道
一键对比试用API 限时免费