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
相关产品推荐
相关产品推荐

