圆弧派博客 - 专注于网络技术

五分钟开发ToDoListAPP后端

使用CodeBuddy IDE五分钟内即可完成ToDoList基础后端开发,在这个AI工具发达的时代,我们已不需要将全部的知识装进大脑,只需有一个大的框架,细节交给AI即可快速建立项目。
环境配置:Node.js

将项目需求描述给codebuddy,我这里模型选的是GPT-5-nano,只需稍等几十秒钟,项目将会完全构建

以下是codebuddy生成的项目(未进行任何修改)
index.js:

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

// In-memory storage
let todos = [];
let nextId = 1;

function findTodo(id) {
  return todos.find(t => t.id === id);
}

app.use(express.json());

// Get all todos, with optional filtering by completion status
app.get('/todos', (req, res) => {
  const completed = req.query.completed;
  if (completed !== undefined) {
    const isDone = completed === 'true';
    return res.json(todos.filter(t => t.completed === isDone));
  }
  res.json(todos);
});

// Get a single todo by id
app.get('/todos/:id', (req, res) => {
  const id = parseInt(req.params.id, 10);
  const t = todos.find(t => t.id === id);
  if (!t) return res.status(404).json({ error: 'Todo not found' });
  res.json(t);
});

// Create a new todo
app.post('/todos', (req, res) => {
  const { title, description } = req.body;
  if (!title) return res.status(400).json({ error: 'title is required' });

  const todo = {
    id: nextId++,
    title,
    description: description || '',
    completed: false,
    createdAt: new Date().toISOString(),
    updatedAt: new Date().toISOString()
  };
  todos.push(todo);
  res.status(201).json(todo);
});

// Update an existing todo
app.put('/todos/:id', (req, res) => {
  const id = parseInt(req.params.id, 10);
  const t = todos.find(t => t.id === id);
  if (!t) return res.status(404).json({ error: 'Todo not found' });

  const { title, description, completed } = req.body;
  if (title !== undefined) t.title = title;
  if (description !== undefined) t.description = description;
  if (completed !== undefined) t.completed = completed;

  t.updatedAt = new Date().toISOString();
  res.json(t);
});

// Delete a todo
app.delete('/todos/:id', (req, res) => {
  const id = parseInt(req.params.id, 10);
  const idx = todos.findIndex(t => t.id === id);
  if (idx === -1) return res.status(404).json({ error: 'Todo not found' });
  const removed = todos.splice(idx, 1);
  res.json(removed[0]);
});

// Health check (optional)
app.get('/health', (req, res) => {
  res.json({ status: 'ok', todoCount: todos.length });
});

app.listen(port, () => {
  console.log(`Todo backend listening at http://localhost:${port}`);
});

package.json

{
  "name": "todolist-backend",
  "version": "1.0.0",
  "description": "In-memory Todo List backend using Node.js + Express",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.18.2"
  }
}

接下来进行npm安装项目运行所需的库,安装完后直接开始运行看看能不能正常跑起来

测试阶段:
测试接口:(内存存储,重启丢失数据)

请求方式路径功能
GET/todos获取所有待办,可通过查询参数 completed=true/false 进行筛选
POST/todos创建待办,body 示例 { "title": "示例", "description": "可选" }
GET/todos/:id获取指定待办
PUT/todos/:id更新待办,支持 title、description、completed
DELETE/todos/:id删除待办
GET/health健康检查

获取所有待办:


目前初始化成功但还没有添加数据

创建待办

由于我没有进行前端的编写,这里直接在浏览器控制台模拟前端js发送请求完成接下来的测试,js代码如下:

fetch("/todos", {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ "title": "待办名字", "description": "待办描述" })
})


已成功创建两个待办事项,重新get请求todos可查看已成功添加

通过id获取指定待办信息


更新已有待办事项内容


成功更新

删除待办事项


健康检测

注意事项:
该版本的待办事项数据仅保存在内存,重启后将全部丢失,仅适合开发/测试阶段。不过接下来可以让codebuddy优化成使用json文件存储或者使用数据库(SQLite、PostgreSQL、MongoDB 等)存储数据,交给各位去继续探索了。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=6g36nynyzup

当前页面是本站的「谷歌AMP」版。查看和发表评论请点击:完整版 »