本次记录Ajax接口是如何通过Node.js,如何发送与接收Ajax的请求,由于前面已经准备好了Node.js的http模块的技术储备,所以在http模块的基础上准备Ajax的网络请求,为后续的项目中会使用到的普通HTTP请求进行前期技术储备
使用nodejs创建一个http模块的createServer服务,实际开发可以将Ajax的处理部分,封装至一个单独的文件函数中,只需要在调用函数时传入req/res就行
Ajax本质上就是一次普通HTTP请求,前端发起请求,Node.js服务端接收请求后返回JSON数据
tcp->stream流->buffer缓冲区->http接收并处理->业务处理->响应给前端
const http = require("http");const server = http.createServer((req, res) => { res.writeHead(200, {"Content-Type": "application/json; charset=utf-8", // 注意这里不要写错奥,与SSE的值要区别开"Access-Control-Allow-Origin": "*", });if (req.url === "/api/ajax") {console.log("接收到来自客户端的/api/ajax的ajax接口请求") res.end(JSON.stringify({code: 0,message: "服务端返回Ajax请求成功",data: {time: newDate().toLocaleString(), }, }), );return; } res.end(JSON.stringify({code: 404,message: "Not Found", }), );});server.listen(3000, () => { console.log("Ajax 服务端已启动:http://localhost:3000/api/ajax");});通过nodejs的服务调用另一个服务的Ajax请求,这里直接使用Node.js内置的fetch发送请求,整体流程和浏览器里的fetch基本一致
fetch->http->buffer缓冲区->stream流->tcp协议传输->发送给后端
const http = require("http");const server = http.createServer((req, res) => { console.log("ajax客户端启动中...");});server.listen(3001, () => { console.log("ajax客户端-服务已启动: http://localhost:3001"); // 发起请求-主要代码 fetch("http://localhost:3000/api/ajax") .then((res) => res.json()) .then((data) => {console.log("客户端发起-请求结果:", data); }) .catch((err) => {console.error("客户端发起-请求失败:", err.message); });});server.on("error", (err) => { console.error("ajax客户端-服务启动失败: ", err.message);});'Content-Type': 'application/json; charset=utf-8''Access-Control-Allow-Origin': '*'或指定允许访问的域名mkdir -p my-nodenpm init -ypackage.json,参考下方代码{"name":"my-node", "version":"1.0.0", "main":"main.js", "scripts":{"dev":"node main.js" }, "keywords":[], "author":"", "license":"ISC", "description":""}main.js 复制上方接收代码npm run dev启动http://localhost:3000/api/ajax查看结果NodeJS服务发送Ajax请求示例代码,查看结果👉往期推荐:
NodeJS+Koa学习笔记(1-7)Node.js SSE请求接口开发
NodeJS+Koa学习笔记(1-7)Node.js SSE请求接口开发
NodeJS+Koa学习笔记(1-6)Node.js Buffer 和 Stream的使用