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

本文共 3656 字,大约阅读时间需要 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/

你可能感兴趣的文章
python 安装 easy_install 和 pip 流程
查看>>
python 安装echarts
查看>>
python 安装opencv及问题解决
查看>>
Python 安装程序:“写入文件 C:\Python27\pythonw.exe 时出错“
查看>>
Python 安装避坑指南:从入门到进阶
查看>>
Python 安装配置详解
查看>>
python 实现儿童算术游戏
查看>>
python 实现字符串转整型
查看>>
Python 实现定时任务的八种方案!
查看>>
python 实现将RGBA 转换为RGB
查看>>
python字符串与url编码的转换
查看>>
Python 实现自动化测试 dubbo 协议接口
查看>>
python编程基础之十六
查看>>
python字符串input输入_Python input()函数:获取用户输入的字符串
查看>>
python 对json数据读取及保存与读取,对dump,dumps,load,loads的理解
查看>>
Python 对mysql数据库的操作
查看>>
Python 对象数据库列表
查看>>
Python 导入requests报错No module named requests
查看>>
Python 将JPEG图片批量改成jpg并删除JPEG图片
查看>>
python 将函数加到列表中进行调用
查看>>