从用户和产品信号开始
生产环境中的功能应有明确的存在理由,也要有办法了解它是否有用。分析工具提供了测量层:识别有意义的活动,并用它辅助产品决策,而不是把收集数字本身当成目标。
将服务集成到连贯的体验中
AI API 与 Stripe 提供不同的外部能力:前者可以带来模型驱动的行为,后者用于支付流程。无论哪一种集成,都需要在产品中有明确位置、行为可预期,并谨慎管理相关配置。
理解应用如何持续运行
功能并不会在开发者电脑上运行成功时就结束。VPS 概念介绍了承载线上应用的服务器环境及其运行背景。本阶段将产品目标、第三方服务与部署思维联系起来,形成面向生产环境的工作方式。
从概念到可运行的代码
这些代码片段展示了各阶段知识在真实项目中的应用。请将它们作为阅读、分析、修改和测试的起点,而不是不理解就复制的代码。
将外部服务凭证留在服务器
路由在调用 AI 服务前验证请求。API 密钥来自服务器环境变量,外部错误会转换成受控响应,密钥不会发送到浏览器代码。
export async function POST(request) {
const { prompt } = await request.json();
if (typeof prompt !== "string" || !prompt.trim()) {
return Response.json({ error: "Prompt is required." }, { status: 400 });
}
const upstream = await fetch(process.env.AI_API_URL, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.AI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ prompt: prompt.trim() }),
});
if (!upstream.ok) {
return Response.json({ error: "The service is unavailable." }, { status: 502 });
}
return Response.json(await upstream.json());
}让运行环境可重复
Dockerfile 安装锁定的依赖,在独立阶段构建,并以非 root 用户运行生产服务。正式部署还应添加健康检查、固定基础镜像并通过部署配置注入密钥。
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-alpine AS runtime
ENV NODE_ENV=production
WORKDIR /app
COPY --from=build /app .
EXPOSE 3000
USER node
CMD ["npm", "start"]阅读后动手修改改变一项要求,先预测结果,再运行代码验证。在评审时,说明你的取舍以及下一步会做的一项改进。