博客
关于我
nodejs核心模块 http模块 ---接口
阅读量:267 次
发布时间:2019-03-01

本文共 3723 字,大约阅读时间需要 12 分钟。

Node.js 核心模块 http 模块 — 接口

13. 理解静态资源与接口的区别

服务器上有许多资源,每个资源都有自己的 URL。客户端浏览器想要访问某个资源,就需要向服务器发起对应的请求。静态资源和接口是服务器处理请求的两种主要方式。

13.1 资源的分类

静态资源

  • 它们通常以文件形式存在,例如 index.html, style.css, index.js 等。
  • 处理静态资源时,服务器直接读取资源文件内容并返回给客户端浏览器。

动态资源(接口)

  • 它们不是以具体文件形式存在的,而是服务器上的代码段。
  • 当接口被调用时,服务器会执行这段代码并将结果返回给客户端浏览器。
13.2 发送请求的途径
  • 在地址栏中直接访问 URL。
  • 通过 <a> 标签进行跳转。
  • 通过表单提交。
  • 通过 AJAX 技术访问 URL。
13.3 请求的类型
  • GET:在地址栏中直接访问 URL 即可使用 GET 方式。静态资源通常使用 GET 请求。
  • POST:通过表单提交,设置 formmethod 为 POST。
  • DELETE, PUT, PATCH, OPTIONS:这些方法通常用于动态资源或 API 接口。

14. 写一个不带任何参数的 GET 类型接口

目标:提供一个名为 getList 的接口 (http://localhost:8083/getList),以 JSON 字符串格式返回 db/data.json 的内容。

目标
  • 使用 Postman 测试接口。
  • 接口路径:http://localhost:8083/getList
  • 返回 db/data.json 的内容。
代码示例
const http = require('http');
const fs = require('fs');
const path = require('path');
const server = http.createServer((req, res) => {
if (req.url === '/getList' && req.method === 'GET') {
const filePath = path.join(__dirname, 'db', 'data.json');
const data = fs.readFileSync(filePath, 'utf8');
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ list: JSON.parse(data) }));
} else {
res.statusCode = 404;
res.end('错误的路径');
}
});
server.listen(8083, () => {
console.log('服务器运行在 8083 端口上');
});
说明
  • 使用 req.urlreq.method 判断请求路径和类型。
  • res.end() 的参数只能是字符串或 Buffer 对象。
  • JSON.stringify 用于将数据转换为 JSON 字符串格式返回。

15. 带参数的 GET 请求 — 获取查询字符串中的数据

目标:提供一个名为 getList 的接口 (http://localhost:8083/getList?name=xxxx),以 JSON 字符串格式返回 db/data.json 中名称为 xxxx 的数据。

代码示例
const http = require('http');
const fs = require('fs');
const path = require('path');
const querystring = require('querystring');
const server = http.createServer((req, res) => {
if (req.url === '/getList' && req.method === 'GET') {
const [url, queryStr] = req.url.split('?');
const queryObj = querystring.parse(queryStr);
const filePath = path.join(__dirname, 'db', 'data.json');
const data = fs.readFileSync(filePath, 'utf8');
const list = JSON.parse(data);
const result = list.find(item => item.id === queryObj.id);
if (result) {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(result));
} else {
res.statusCode = 404;
res.end('未找到对应数据');
}
} else {
res.statusCode = 404;
res.end('错误的路径');
}
});
server.listen(3000, () => {
console.log('服务器运行在 3000 端口上');
});
说明
  • 使用 querystring 模块解析查询字符串。
  • 通过 find 方法查找数据库中符合条件的数据。
  • 返回结果以 JSON 格式响应。

16. POST 接口

目标:提供一个名为 add 的接口 (http://localhost:8083/add),以 POST 请求方式传入 name 值,将数据保存到 db/data.json 中。

代码示例
const http = require('http');
const querystring = require('querystring');
const server = http.createServer((req, res) => {
if (req.url === '/add' && req.method === 'POST') {
let result = '';
req.on('data', (chunk) => {
result += chunk;
});
req.on('end', () => {
const parsedData = querystring.parse(result);
const filePath = path.join(__dirname, 'db', 'data.json');
const data = fs.readFileSync(filePath, 'utf8');
const list = JSON.parse(data);
list.push(parsedData);
fs.writeFileSync(filePath, JSON.stringify(list, null, 2));
res.setHeader('Content-Type', 'application/json');
res.end({ message: '数据已添加', data: parsedData });
});
} else {
res.statusCode = 404;
res.end('错误的路径');
}
});
server.listen(8000, () => {
console.log('服务器运行在 8000 端口上');
});
说明
  • 使用 req.on('data')req.on('end') 接收 POST 请求参数。
  • querystring 模块用于解析 POST 请求体中的查询字符串。
  • 数据保存到文件中时使用 fs.writeFileSync,以保持数据的一致性。

转载地址:http://fdca.baihongyu.com/

你可能感兴趣的文章
Node.js基于Express框架搭建一个简单的注册登录Web功能
查看>>
node.js学习之npm 入门 —8.《怎样创建,发布,升级你的npm,node模块》
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
Node.js安装及环境配置之Windows篇
查看>>
Node.js安装和入门 - 2行代码让你能够启动一个Server
查看>>
node.js安装方法
查看>>
Node.js官网无法正常访问时安装NodeJS的方法
查看>>
node.js模块、包
查看>>
node.js的express框架用法(一)
查看>>
Node.js的交互式解释器(REPL)
查看>>
Node.js的循环与异步问题
查看>>
Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
查看>>
nodejs + socket.io 同时使用http 和 https
查看>>
NodeJS @kubernetes/client-node连接到kubernetes集群的方法
查看>>
NodeJS API简介
查看>>
Nodejs express 获取url参数,post参数的三种方式
查看>>
nodejs http小爬虫
查看>>
nodejs libararies
查看>>
nodejs npm常用命令
查看>>
nodejs npm常用命令
查看>>