博客
关于我
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/

你可能感兴趣的文章
Node.js 在个推的微服务实践:基于容器的一站式命令行工具链
查看>>
Node.js 实现类似于.php,.jsp的服务器页面技术,自动路由
查看>>
Node.js 异步模式浅析
查看>>
node.js 怎么新建一个站点端口
查看>>
Node.js 文件系统的各种用法和常见场景
查看>>
Node.js 的事件循环(Event Loop)详解
查看>>
node.js 简易聊天室
查看>>
Node.js 线程你理解的可能是错的
查看>>
Node.js 调用微信公众号 API 添加自定义菜单报错的解决方法
查看>>
node.js 配置首页打开页面
查看>>
node.js+react写的一个登录注册 demo测试
查看>>
Node.js中环境变量process.env详解
查看>>
Node.js之async_hooks
查看>>
Node.js升级工具n
查看>>
Node.js卸载超详细步骤(附图文讲解)
查看>>
Node.js基于Express框架搭建一个简单的注册登录Web功能
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
Node.js安装及环境配置之Windows篇
查看>>
Node.js安装和入门 - 2行代码让你能够启动一个Server
查看>>
node.js安装方法
查看>>