2. 应用程序接口深度挖掘概念–构建服务的关键概念

本课程将深入学习API的进阶概念,并通过实际服务构建进行实践操作。课程采用理论与实践相结合的方式,旨在帮助学员掌握如何在实际项目中运用API。尚未了解API基础概念的学员,建议先阅读相关基础知识文章后再进行学习。

API进阶概念——服务构建的核心要义

1. API深化概念——服务构建的核心概念

1-1. API类型及实战应用方法

API根据目的和功能可分为多种类型。理解各类
API的使用场景,并在实战项目中选择合适的API至关重要。

1. REST API(表征状态转移)

  • 这是最广泛使用的API架构。
  • 通过HTTP请求实现客户端与服务端的数据交互。
  • 特点:轻量级、标准化、支持多种客户端
  • 示例:
    • GET /users/1 → 获取特定用户信息
    • POST /reviews → 添加新评论

2. GraphQL API

  • 客户端可仅请求所需数据。
  • 特点:比REST更灵活,可避免调用冗余数据。
  • 示例:
{
  user(id: "1") {
    name
    email
    reviews {
      title
      rating
    }
  }
}

3. WebSocket API

  • 适用于需要实时数据通信的场景(如聊天、实时通知)。
  • 特点:通过持续连接实现快速响应。
  • 示例:实现实时评论更新功能

4. Open API(公开API)

  • 面向公众开放使用的API。
  • 示例:
    • TMDB API(提供影视剧数据)
    • OpenWeather API(提供天气信息)
    • ChatGPT API(AI文本生成API)
  • 1-2. API认证(Authentication)与安全(Security)
  • API的安全性至关重要。
  • 必须防止未经授权的用户篡改或窃取数据。
  • 1. API认证方式
  • API密钥(简易方式)
    • 用户请求API时需在请求头中包含API密钥。
    • 示例: Authorization: Bearer YOUR_API_KEY
  • OAuth 2.0(社交登录、权限管理)
    • 适用于Google、Facebook登录等场景。
    • 通过获取访问令牌进行认证的方式。
  • JWT(JSON Web Token)——增强安全性
    • 客户端登录时,服务器会签发JWT令牌,
    • 后续请求时需包含JWT进行认证。
  • 2. API安全强化方案
  • 使用HTTPS(SSL/TLS加密)
  • API请求限制(速率限制)
  • 配置CORS(跨源资源共享)

2. API实践——实际服务构建

实践项目:"悲伤剧集推荐API开发"

2-1. 项目目标与服务流程

项目目标

  • 用户提交悲伤剧集评论后,API自动存储数据
  • API通过AI分析推荐悲伤剧集
  • 利用API在网站上展示推荐结果

服务流程

  1. 用户发表评论 → API存储至数据库
  2. API进行用户情感分析(运用AI技术)
  3. API从数据库推荐情感相似的剧集
  4. API将推荐剧集返回至网站

3. 实践1:API设计与数据建模

3-1. API设计(端点定义)

HTTP方法端点说明
POST/reviews添加用户评论
GET/reviews/{drama}获取特定剧集的评论
GET/recommend/{user}为用户推荐定制化悲伤剧集

3-2. 数据模型设计

数据库表结构(基于PostgreSQL)

ID用户剧集名称情感评分 (0~1)评论内容
1内容我的叔叔0.9这是一部令人感动的剧集啊 ㅠㅠ
2flow阳光先生0.85没有眼泪是看不下去的…

4. 实践2:使用FastAPI构建API

4-1. FastAPI安装与基础配置

bash示例代码

pip install fastapi uvicorn psycopg2

4-2. API基础代码编写

python示例代码

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Review(BaseModel):
    user: str
    drama: str
    rating: int
    review: str

@app.post("/reviews")
def add_review(review: Review):
    return {"message": f"{review.drama}에 대한 리뷰가 저장되었습니다!"}

4-3. 运行与测试

bash示例代码

uvicorn main:app --reload

API调用示例(POST请求)

HTTP示例代码

POST /reviews
{
"user": "content",
"drama": "나의 아저씨",
"rating": 5,
"review": "정말 감동적이었어요!"
}

5. 实践3:添加AI情感分析与推荐功能

5-1. 情感分析API集成

Python示例代码


from transformers import pipeline

emotion_model = pipeline("text-classification", model="j-hartmann/emotion-english-distilroberta-base")

def analyze_emotion(text):
    result = emotion_model(text)
    return result[0]["score"] if result[0]["label"] == "sadness" else 0.0

5-2. 实现AI推荐系统

python示例代码

@app.get("/recommend/{user}")
def recommend_drama(user: str):
    # 슬픈 감성 점수가 높은 드라마 추천
    return {"recommended": ["나의 아저씨", "미스터 션샤인"]}

API请求与响应
例HTTP示例代码

GET /recommend/content
{
    "recommended": ["나의 아저씨", "미스터 션샤인"]
}

6. API部署与网站集成 – 实战应用

现在我们将学习如何将基于FastAPI构建的API部署到实际服务器,并在React网站中调用。
部署后将测试API是否正常运行,并进行性能优化。

6-1. FastAPI部署(利用AWS、Vercel、Heroku)

需将FastAPI构建的API部署至Web服务器以供公众使用。
主流部署方案包括AWS、Vercel、Heroku等平台。

FastAPI部署必备概念

  1. 服务器运行模式:FastAPI在本地开发环境中使用 uvicorn,但
    部署时需使用 gunicorn等WSGI服务器。
  2. 云服务器选择:需选择AWS、Vercel、Heroku等平台
  3. 域名绑定:部署后的API http://localhost:8000
    https://myapi.com 在相同域名下运行。

方法1:通过AWS EC2部署

AWS EC2(弹性计算云)通过提供云端虚拟服务器实现API部署。

1. 创建EC2实例

  1. 在AWS控制台创建EC2实例。
  2. 选择 Ubuntu 20.04Amazon Linux
  3. 最低配置:t2.micro(免费)

2. 在EC2上部署FastAPI

通过SSH连接至EC2实例执行以下代码

    ssh -i your-key.pem ubuntu@your-ec2-ip

    安装Python及相关包

      sudo apt update && sudo apt upgrade -y
      sudo apt install python3-pip -y
      pip3 install fastapi uvicorn

      启动 API

        uvicorn main:app --host 0.0.0.0 --port 8000

        配置防火墙

        • 需在AWS安全组中开放8000端口
        • http://your-ec2-ip:8000/docs 验证API是否正常运行

          3. 通过 Nginx & Gunicorn 优化部署

          3-1. 安装并运行 Gunicorn

            pip install gunicorn
            gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

            3-2. Nginx配置(反向代理)

              sudo apt install nginx -y
              sudo nano /etc/nginx/sites-available/api
              nginx복사편집server {
                  listen 80;
                  server_name your-api.com;
                  
                  location / {
                      proxy_pass http://127.0.0.1:8000;
                      proxy_set_header Host $host;
                      proxy_set_header X-Real-IP $remote_addr;
                  }
              }
              

              3-3. Nginx配置生效后启动服务

                sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-enabled
                sudo systemctl restart nginx

                3-4. 域名绑定与SSL证书配置

                  sudo apt install certbot python3-certbot-nginx -y
                  sudo certbot --nginx -d your-api.com

                  现在您可以在 https://your-api.com 使用 FastAPI 了!

                  方法二:通过Vercel部署

                  Vercel是可免费部署FastAPI应用的服务平台。

                  1. 创建Vercel账户并安装CLI

                    npm install -g vercel
                    vercel login

                    2. 将FastAPI项目连接至Vercel并部署

                    vercel

                    现在 https://your-api.vercel.app即可使用 API。

                    方法 3:通过 Heroku 部署

                    Heroku是可轻松部署API的云服务。

                    1. 安装 Heroku CLI

                    curl https://cli-assets.heroku.com/install.sh | sh
                    heroku login

                    2. 将FastAPI项目部署至Heroku

                    heroku create your-api-name
                    git push heroku main

                    现在您可以在https://your-api.herokuapp.com 中使用该API。

                    6-2. 在 React 网站中调用 API 并显示结果

                    我们将学习如何在 React 网站中调用通过 FastAPI 部署的 API 以获取数据

                    1. React项目配置

                    npx create-react-app my-app
                    cd my-app
                    npm start

                    2. 在 React 中调用 API(使用 useEffect + fetch)

                    javascript

                    import { useEffect, useState } from "react";

                    function App() {
                    const [data, setData] = useState([]);

                    useEffect(() => {
                    fetch("https://your-api.com/recommend/content")
                    .then(response => response.json())
                    .then(result => setData(result.recommended));
                    }, []);

                    return (
                    <div>
                    <h1>추천 드라마</h1>
                    <ul>
                    {data.map((drama, index) => (
                    <li key={index}>{drama}</li>
                    ))}
                    </ul>
                    </div>
                    );
                    }

                    export default App;

                    3. CORS配置(在FastAPI中允许React请求)

                    FastAPI默认出于安全考虑会阻止CORS请求。

                    要在 React 中正常调用 API,需在 FastAPI 中添加 CORS 配置。

                    from fastapi.middleware.cors import CORSMiddleware

                    app.add_middleware(
                    CORSMiddleware,
                    allow_origins=["*"], # 특정 도메인만 허용 가능
                    allow_credentials=True,
                    allow_methods=["*"],
                    allow_headers=["*"],
                    )

                    现在React已能正常调用API

                    6-3. 测试与优化实施

                    确认API是否正常部署,并进行性能优化的过程。

                    1. 运用API测试工具

                    • Postman:直接发送API请求并验证响应
                    • cURL:在终端测试API调用
                    curl -X GET "https://your-api.com/recommend/content
                    • FastAPI内置/docs功能:
                      • https://your-api.com/docs 自动生成API文档

                    2. API响应速度优化

                    • 应用Redis缓存:将高频请求数据存储至Redis
                    • 数据库索引优化:通过SQL添加索引提升检索速度
                    • Gunicorn + Nginx组合:配置高性能Web服务器

                    3. 添加日志记录与监控功能

                    • 在FastAPI中 logging存储API调用日志
                    • 集成AWS CloudWatch、Grafana等监控工具

                    7. 项目最终整理

                    • 利用API将用户评论存储至数据库
                    • 运用AI进行情感分析后推荐悲伤剧集
                    • 通过网站调用API显示推荐结果

                    8. 实战学习中可实现的项目应用创意

                    • 基于AI的新闻摘要API
                    • 实时聊天API(WebSocket应用)
                    • 社交登录API(基于OAuth 2.0)

                    核心技术概念梳理(Nginx、Gunicorn、Vercel、Heroku、React、CORS、FastAPI)

                    术语说明主要作用应用示例
                    NginxWeb服务器兼反向代理服务器静态文件服务、负载均衡、安全增强网站流量分发,API服务器前端请求管理
                    GunicornPython WSGI服务器运行FastAPI、Django、Flask等应用程序FastAPI部署时, gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app 使用
                    Vercel云部署平台静态网站及后端服务器部署免费支持 React、Next.js、FastAPI 等部署
                    HerokuPaaS(平台即服务)仅需上传代码即可自动部署服务器git push heroku main通过FastAPI部署
                    React前端库基于UI组件(Component)构建Web应用useState, useEffect使用数据管理
                    CORS安全策略(防止跨源请求)允许外部域名发起API请求FastAPI中 allow_origins=["*"] 需配置
                    FastAPI基于Python的Web框架轻松快速实现API开发@app.get("/") 支持API路由

                    发表评论

                    목차