正在学习

7.2 设置 API 项目(Express 或 FastAPI)

7.3 使用 Claude 生成样板代码和业务逻辑

一旦你的项目骨架运行起来——无论是 FastAPI 还是 Express——就到了将 Claude 作为活跃的协作者引入工作流的时候。真正的生产力提升来自于让 Claude 生成你的样板代码,并协助构建驱动 API 的核心业务逻辑。这个阶段标志着从静态脚手架到动态、领域感知行为的转变。Claude 有助于强制执行清晰的结构、确保数据一致性,并加速创建重复性逻辑,如 CRUD 处理器、服务层和验证例程。

本节将展示如何一步步引导 Claude 产出高质量、模块化的业务逻辑,使其保持清晰、可测试和可维护,而无需手动重复。

概念开发

样板代码——路由、模型、验证和响应格式化——是必需的但耗时。如果你为 Claude 提供正确的上下文,它可以几乎瞬间生成它。关键在于结构化提示:你要描述你想要的以及你希望它如何组织,而不仅仅是最终代码。

一个强大的工作流如下:

  1. 定义意图:用自然语言描述特性或逻辑(例如,"添加使用邮箱和密码的用户认证")。
  2. 勾勒结构:让 Claude 在生成代码之前提出文件夹布局或类设计。
  3. 逐步生成:让 Claude 一次构建一个组件——先是模型,然后是控制器,再是路由——这样每个阶段都保持可检查性。
  4. 验证和迭代:在本地运行每个文件以验证语法和逻辑正确性,然后将任何运行时反馈提供给 Claude 进行增量改进。

Claude 通过依赖关系进行推理的能力意味着它可以跨文件保持内部一致性——使路由签名与模式定义对齐,使测试用例与实现细节对齐。

下面的示例演示了 Claude 如何在受控框架内生成业务逻辑,将普通的 CRUD API 转变为功能性服务。

动手实践示例:为 TaskFlow API 添加业务逻辑

我们将通过引入一小层业务逻辑来增强上一节中的 TaskFlow API——具体来说,是跟踪逾期任务并通过自动检查将其标记为完成。

向 Claude 发送的提示

"Claude,向现有的 TaskFlow FastAPI 应用添加业务逻辑,使其能够跟踪任务截止日期并自动标记逾期任务。每个任务应具有 ISO 格式的 due_date 字段。包含一个列出所有逾期任务的端点 /tasks/overdue。使用 Pydantic 模型进行验证,并将所有逻辑保存在专用的辅助函数中。"

Claude 通常会生成一个清晰的计划,然后输出完整、有效的代码。下面的代码块展示了当直接应用到我们的 FastAPI 设置时,这种生成过程所产出的内容示例。

Claude 生成的代码(集成示例)

from datetime import datetime, date

from typing import List, Optional, Dict

from fastapi import FastAPI, HTTPException

from pydantic import BaseModel, Field, field_validator

app = FastAPI(title="TaskFlow API", version="1.1.0")

class TaskCreate(BaseModel):

    title: str = Field(min_length=1)

    description: Optional[str] = ""

    completed: bool = False

    due_date: Optional[date] = None

    @field_validator("due_date")

    def validate_due_date(cls, v):

        if v and v < date.today():

            raise ValueError("due_date cannot be in the past")

        return v

class Task(TaskCreate):

    id: int

    overdue: bool = False

_next_id = 1

_tasks: Dict[int, Task] = {}

def update_overdue_flags():

    """Mark tasks as overdue if due_date < today and not completed."""

    today = date.today()

    for task in _tasks.values():

        task.overdue = bool(task.due_date and task.due_date < today and not task.completed)

@app.post("/tasks", response_model=Task, status_code=201)

def create_task(payload: TaskCreate) -> Task:

    global _next_id

    update_overdue_flags()

    task = Task(id=_next_id, **payload.model_dump())

    _tasks[task.id] = task

    _next_id += 1

    return task

@app.get("/tasks", response_model=List[Task])

def list_tasks() -> List[Task]:

    update_overdue_flags()

    return list(_tasks.values())

@app.get("/tasks/overdue", response_model=List[Task])

def list_overdue_tasks() -> List[Task]:

    update_overdue_flags()

    return [t for t in _tasks.values() if t.overdue]

@app.patch("/tasks/{task_id}/complete", response_model=Task)

def mark_complete(task_id: int) -> Task:

    task = _tasks.get(task_id)

    if not task:

        raise HTTPException(status_code=404, detail="Task not found")

    task.completed = True

    task.overdue = False

    return task

这段代码引入了带验证的 due_date 字段、一个检查并标记逾期任务的后台辅助函数(update_overdue_flags),以及一个额外的端点 /tasks/overdue 以便轻松查询。它简洁、声明式,并符合实际需求。

测试方法:

curl -X POST http://localhost:8000/tasks \

-H "Content-Type: application/json" \

-d '{"title":"Submit project","due_date":"2024-12-01"}'

如果今天的日期超过 12 月 1 日,overdue 标志将自动显示为 true。

澄清表:样板代码的有效提示设计

提示意图 Claude 的关注点 示例指令 输出行为
添加验证 数据完整性强制 "为日期和状态添加 Pydantic 验证器。" 在无效输入时抛出描述性错误
扩展端点 新功能或路由添加 "添加 /tasks/overdue 端点以筛选逾期项目。" 生成具有一致模式的新路由
引入业务逻辑 领域级规则与计算 "添加每日标记逾期任务的函数。" 创建维护状态一致性的辅助函数
组织结构 关注点清晰分离 "将验证逻辑保留在模型中,规则放在辅助函数中。" 产生模块化、可复用的设计
文档化行为 内联开发者清晰度 "添加文档字符串和端点摘要。" 为代码添加注释以实现长期可维护性

在本节中,你学习了如何使 Claude 成为一位高效的协作者,以生成既功能完善又易于维护的样板代码和业务逻辑。"规划—提示—生成—验证"这一工作流程确保了输出质量的一致性,同时让你保留架构层面的控制权。

通过将大型功能拆分为多个由 Claude 引导的小型会话,你可以持续演进 API 的能力,同时保持清晰度与正确性。

在下一节"测试 Claude 生成的 API"中,你将学习如何通过自动化测试来验证新业务逻辑的正确性与健壮性——同样借助 Claude 来帮助你设计、生成和改进测试套件。

练习题

Claude 在 API 开发工作流中的主要角色是什么?

A. 手动编写所有样板代码
B. 充当生成样板代码和业务逻辑的积极共同开发者
C. 仅验证现有代码而不生成新内容
D. 仅处理部署流程

哪个步骤涉及用自然语言描述所需功能?

A. 逐步生成
B. 验证并迭代
C. 定义意图
D. 概述结构

以下哪些是 Claude 推荐的代码生成工作流程的一部分?(选择所有适用的)

A. 定义意图
B. 勾勒结构
C. 逐步生成
D. 验证和迭代
E. 立即部署

Claude 能够通过将路由签名与模式定义对齐、将测试用例与实现细节对齐,从而在各个文件之间保持内部一致性。

在 TaskFlow API 示例中,列出所有逾期任务的端点是 ___。

解释 Claude 如何帮助生成 API 的业务逻辑。

在 Claude 生成的 TaskFlow API 代码中,update_overdue_flags 函数的目的是什么?

A. 删除逾期任务
B. 将任务标记为已完成
C. 如果任务的截止日期已过且任务未完成,则将其标记为逾期
D. 验证任务标题

以下哪些是测试 Claude 生成的 TaskFlow API 的有效方法?(选择所有适用的)

A. 使用 curl 命令创建和列出任务
B. 手动检查代码中的语法错误
C. 运行应用程序并查看交互式文档
D. 未经测试就将应用程序部署到生产服务器

TaskFlow API 中的 validate_due_date 字段验证器确保截止日期不能是未来的日期。

描述 Claude 的工作流程如何与 Express API 开发的先验知识相结合。

在使用 Claude 为 FastAPI 应用程序生成业务逻辑时,推荐工作流程的第一步是什么?

A. 生成模型、控制器和路由等逐步组件
B. 验证并迭代生成的代码
C. 用自然语言定义功能或逻辑的意图
D. 规划文件夹结构或类设计

在 TaskFlow API 示例中,Claude 生成了一个辅助函数 update_overdue_flags(),该函数在多个端点中被调用,以确保任务状态的一致性。

在 FastAPI 中添加用于跟踪逾期任务的业务逻辑时,Claude 使用 Python 标准库中的 ___ 类来处理日期比较。

解释 Claude 在为与同一数据交互的多个 FastAPI 端点生成业务逻辑时如何保持内部一致性。

登录后解锁笔记、知识点解析、AI 问答

立即登录