一个简单的API
Web API
-
我们要写一个api去读取一个json文件里面的内容
这里是最初的版本
const server = http.createServer((req, res) => { const pathName = req.url; if (pathName === "/api") { // __dirname是当前文件所在的位置 fs.readFile(`${__dirname}/dev-data/data.json`, "utf-8", (err, data) => { const productData = JSON.parse(data); res.writeHead(200, { "Content-type": "application/json" }); res.end(data); }); } else { // 写404状态码,输出在控制台中 res.writeHead(404, { "Content-type": "text/html", "my-own-header": "hello world!", }); res.end("<h1>Page not found!</h1>"); } }); server.listen(8000, "127.0.0.1", () => { console.log("Listening to requests on port 8000."); });
这里需要注意的地方:
-
__dirname
__dirname表示的是当前文件的位置。我们在执行脚本文件的时候还有一个执行的位置,这样写可以保证确定我们可以找到我们想要找到的对应的文件。
-
writeHead
res.writeHead(200, { "Content-type": "application/json" });
这里相当于是后端返回给前端的状态码,以及在响应头写上返回的是什么样子的数据。收到这样的数据才能确定这一部请求数据是否成功或者是什么状态。
-
这里是修改之后的版本
// 把这里的内容写到外面了
const data = fs.readFileSync(`${__dirname}/dev-data/data.json`, "utf-8");
const dataObj = JSON.parse(data);
const server = http.createServer((req, res) => {
const pathName = req.url;
if (pathName === "/" || pathName === "/overview") {
res.end("This is the OVERVIEW!");
} else if (pathName === "/product") {
res.end("This is the PRODUCT!");
} else if (pathName === "/api") {
res.writeHead(200, { "Content-type": "application/json" });
res.end(data);
} else {
// 写404状态码,输出在控制台中
res.writeHead(404, {
"Content-type": "text/html",
"my-own-header": "hello world!",
});
res.end("<h1>Page not found!</h1>");
}
});
server.listen(8000, "127.0.0.1", () => {
console.log("Listening to requests on port 8000.");
});
- 把读取data的内容写到外面,这里叫做top-level code,顶层代码,这里的代码只执行一次,就是在这个脚本执行的时候,所以不存在阻塞,可以用同步读取。
- 注意的是,我们一般都会把只需要执行一次的代码写到顶层。因为下面createServer的代码是循环执行的,会一直在执行,如果把这些代码写在里面,消耗不必要的资源。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报