You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js TODO项目如何设置POST请求方法触发待办新增逻辑?

问题解决方案

1. 触发POST请求的常用方式

你可以通过以下几种方式发送指定方法的请求,验证现有POST逻辑:

  • 命令行curl工具
    直接执行命令:
    curl -X POST "http://localhost/todolist?todo=买早餐"
    
    其中-X POST参数就是指定请求方法为POST。
  • 接口调试工具(Postman/ApiPost等)
    新建请求后,在地址栏输入http://localhost/todolist?todo=买早餐,请求方法下拉选择POST,点击发送即可。
  • 前端JS调用示例
    用fetch发送请求时指定method参数:
    fetch('http://localhost/todolist?todo=买早餐', {
      method: 'POST'
    }).then(res => res.json()).then(console.log)
    

2. 补充PUT、DELETE请求的服务端逻辑

你当前的代码仅支持POST、GET两种方法,需要修改/todolist路径下的判断分支,新增PUT和DELETE的处理逻辑,示例如下:

if (url.pathname === '/todolist') {
  // 原有POST逻辑保留
  if (request.method.toLowerCase() === 'post') {
    if (url.searchParams.get('todo')) {
      let todo = url.searchParams.get('todo');
      todoDB.add(todo);
      success(todo);
    } else {
      fail("Parameter 'todo' does not exist or is empty");
    }
  }
  // 原有GET逻辑保留
  else if (request.method.toLowerCase() === 'get') {
    if (url.searchParams.get('id')) {
      let id = url.searchParams.get('id');
      let todo = todoDB.get(parseInt(id));
      success(todo);
    } else {
      success(todoDB.getAll());
    }
  }
  // 新增PUT逻辑:修改指定id的待办内容
  else if (request.method.toLowerCase() === 'put') {
    const id = url.searchParams.get('id')
    const newTodo = url.searchParams.get('todo')
    if (!id || !newTodo) {
      fail("参数id和todo不能为空")
      return
    }
    const updateRes = todoDB.update(parseInt(id), newTodo) // 需你在TodoList类中实现update方法
    updateRes ? success('修改成功') : fail('待办id不存在')
  }
  // 新增DELETE逻辑:删除指定id的待办
  else if (request.method.toLowerCase() === 'delete') {
    const id = url.searchParams.get('id')
    if (!id) {
      fail("参数id不能为空")
      return
    }
    const deleteRes = todoDB.delete(parseInt(id)) // 需你在TodoList类中实现delete方法
    deleteRes ? success('删除成功') : fail('待办id不存在')
  }
  else {
    fail('Method ' + request.method + ' is not supported');
  }
}

3. 四种请求调用示例

按照你现有URL传参的逻辑,四种请求的调用方式如下:

  • 查询所有待办(GET):curl -X GET "http://localhost/todolist"
  • 查询单个待办(GET):curl -X GET "http://localhost/todolist?id=1"
  • 新增待办(POST):curl -X POST "http://localhost/todolist?todo=跑步30分钟"
  • 修改待办(PUT):curl -X PUT "http://localhost/todolist?id=1&todo=跑步1小时"
  • 删除待办(DELETE):curl -X DELETE "http://localhost/todolist?id=1"

注意:RESTful规范中POST/PUT请求的参数通常放在请求体中传输,如果你后续需要改成请求体传参,需要额外监听request的data事件接收解析请求体内容。

内容的提问来源于stack exchange,提问作者Andrée Jansson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 10:36:00