学习用Node.JS开发RESTful API的时候,我发现删数据比较头疼。试了好几次之后,终于学会怎么用HTTP的DELETE方法删库里的信息!今儿个特地来把经验分享给大家哈~
理解DELETE方法的含义
删除东西其实超简单!告诉我你不想再看到哪部分内容,我就能帮你马上去掉!在使用 REST 方式提供 API 的情况下,尤其适合使用 DELETE 这种方法。比如想要清除某个用户信息或者某片文章的话,就得靠它了!
DELETE命令,得告诉服务器我们想删哪个文件。比如,想把某位用户删了,就给服务器发个这样的命令:DELETE /users/1,其中的1就是那个用户唯一的识别码。
别急,服务器接下来要做的就是,找到 URL 中标记所在的那部分资源,然后把它们从资源堆里扔出去。这样就 OK 了吗?当然不,还要告诉你 “搞定了!什么都没有~”,所以会给你回复一个204 No Content状态码。
使用Node.js监听DELETE请求
node.js里有种叫http模块的东西,它能处理所有你客户发来的HTTP请求,当然也包括DELETE。如果他们给你发了DELETE请求,只用使用那个request回调就搞定了~
const http = require('http'); const url = require('url'); const server = http.createServer((req, res) => { const reqUrl = url.parse(req.url, true); const id = reqUrl.pathname.split('/')[2]; if (req.method === 'DELETE' && reqUrl.pathname === `/users/${id}`) { // 处理删除请求 } else { res.statusCode = 404; res.end('Not Found'); } }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); });
搞定DELETE请求特简单,只要看看回调函数里是不是用了DELETE方法,再瞅瞅URL里面有没有要删的资源标识符就行!
简单来说,如果你用DELETE命令删除了一个有特定资源号码的网址,那就代表这个资源已经被删掉了!不过要是操作失败了,网站也会告诉你怎么回事。
解析URL获取参数
找地方删除,其实很容易。用Node.js里的url模块,就能把网址转化成对象。之后,抓取其中的参数,就能顺利搞定了!
听说过parse这个神奇的函数没?它能把网址转换成一份完整的信息清单,包括可读懂的链接类型(如http)和网站地址。然后只要找到里面的pathname属性,那不就是网址对应的路径。最后几步就好说了,用正则表达式或者其他套路来找出链接里的各种参数即可。
如果你给我个网址像这样的:/users/1,那我就能根据这种方法找出数字”1″了!
javascript const url = require('url'); 直接用 url 解析工具,就能把请求的网址给解析出来。{ "1": { "name": "张三", "age": 20, "email": "zhangsan@example.com" }, "2": { "name": "李四", "age": 30, "email": "lisi@example.com" }, "3": { "name": "王五", "age": 25, "email": "wangwu@example.com" } }我们先把网址里的用户名砍出来,用户名在地址栏第三个位置。
这个程序就是把你提交的网址变成别的东东(借助url.parse),接着再用到split功能,就能看到你要的那个部分 “点”:id !
读取和写入数据文件
要把用戶info刪了,先要看清楚他們的信息,利用fs模塊的readFileSync。刪掉後,再將修改後的資料存回users.json就好。這樣,大夥的資訊就都在這裡了!
搞定数据文档后,咱们开始用JavaScript删除!选中你想删掉的人,直接在JSON里把它丢弃就行。记住喔,我会使用fs模块中的writeFileSync方法,来更新并保存已修改的JSON对象到users.json文件去~
哦也!删掉的东西找回来啦!这个过程中,再加上点有趣的功能,比如看看用户有没有违规行为,或者打印出操作记录什么的。
测试DELETE接口
const http = require('http'); const url = require('url'); const fs = require('fs'); const server = http.createServer((req, res) => { const reqUrl = url.parse(req.url, true); const id = reqUrl.pathname.split('/')[2]; if (req.method === 'DELETE' && reqUrl.pathname === `/users/${id}`) { // 读取用户数据 const users = JSON.parse(fs.readFileSync('./users.json')); // 删除用户 delete users[id]; // 写入修改后的用户数据 fs.writeFileSync('./users.json', JSON.stringify(users)); // 返回删除成功提示 res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end(`User ${id} deleted successfully`); } else { res.statusCode = 404; res.end('Not Found'); } }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); });打算试试我们的删除功能好用不?那就用curl命令模拟个HTTP DELETE请求?比如说要删掉名叫1的用户得这么操作:
“`bash
直接点开浏览器,输入“http://localhost:3000/users/1”,然后按“Delete”就能搞定了!通俗来讲,就是删掉用户资料表里面的第一条记录!
这句话就是要告诉你怎么通过HTTP DELETE方式找到并删掉编号为1的用户。稳妥点说,按照预定,成功执行后的状态码会显示成204!
创建HTTP服务器
直说了,Node.js里的http模块能帮我们搞定HTTP服务器。要是有人发了HTTP DELETE请求,那就在request事件处理器里把对应的内容删掉就行!
创建HTTP服务器的基本步骤如下:
1. 引入http模块。
2. 创建一个http.Server实例。
curl -X DELETE http://localhost:3000/users/13. 为服务器实例添加request事件的监听器。
4. 在request事件的回调函数中处理客户端的请求。
只需说声「发送」,就可以和服务器自由聊起来!然后设好接收消息的端口就好咯~
搞定HTTP Delete请求服务器,就是这么简单!
总结与反思
原文链接:https://www.icz.com/technicalinformation/web/2024/06/17668.html,转载请注明出处~~~
评论0