手把手教你用node.js搭建一个Web服务

 更新时间:2024年04月26日 08:31:09   作者:刘先生..  
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,下面这篇文章主要给大家介绍了关于用node.js搭建一个Web服务的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、引言

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,可用于开发各种类型的应用程序,包括 Web 服务。本文将介绍如何使用 Node.js 搭建一个简单的 Web 服务,并附带示例代码。

二、创建 node 项目

 创建一个名为 node-serve 的文件夹,然后在当前文件下输入初始化node项目命令。

npm init

然后一直按回车即可,完成之后可生成一个 package.json 文件。

中间的配置过程可后续在生成的 package.json 文件中配置 

 在当前文件夹下新建一个 index.js 的文件,为当前项目的主入口文件。

到这里 node 项目基本就创建完成了。

三、创建 Web 服务

下载 express 包

npm install express --save

编写 index.js 文件,引入 express 并启动一个服务

const express = require('express');  
const app = express();  
  
// 设置路由 ( 接口 )
app.get('/', (req, res) => {  
  res.send('Hello World!');  
});  
  
// 启动服务  
app.listen(3000, () => {  
  console.log('Server started on port 3000');  
});

在这个示例中,我们创建了一个 express 应用,并设置了一个路由,当访问根路径 / 时,返回字符串 'Hello World!'

在当前文件夹下使用终端命令启动服务

node index.js

使用 postman 测试如下

四、使用中间件 

中间件是指那些在处理 HTTP 请求和响应周期中的某个特定阶段执行代码的函数。这些函数可以执行各种任务,例如解析请求体、验证身份、记录日志、路由处理等。

body-parser

body-parser 是一个 Node.js 中间件,用于解析 HTTP 请求体。它提供了多种解析器,如 JSON、Raw、Text 和 URL-encoded form,以处理不同类型的请求体。

const express = require('express');  
const bodyParser = require('body-parser');  
const app = express();  
  
// 使用 body-parser 中间件解析 JSON 请求体  
app.use(bodyParser.json());  
  
// 使用 body-parser 中间件解析 URL-encoded form 请求体  
app.use(bodyParser.urlencoded({ extended: true }));  
  
// 定义路由处理程序  
app.get('/', (req, res) => {  
  res.send('Hello World!');  
});  
  
app.post('/api/data', (req, res) => {  
  // 解析请求体中的 JSON 数据  
  const data = req.body;  
  // 处理数据...  
});  
  
app.listen(3000, () => {  
  console.log('Server started on port 3000');  
});

自定义中间件

const express = require('express');  
const app = express();  
  
// 定义一个中间件函数  
function myMiddleware(req, res, next) {  
  console.log('Middleware executed');  
  next(); // 调用 next() 函数以将控制权传递给下一个中间件或路由处理器  
}  
  
app.use(myMiddleware); // 将中间件应用到应用中  
  
app.get('/', (req, res) => {  
  res.send('Hello World!');  
});  
  
app.listen(3000, () => {  
  console.log('Server started on port 3000');  
});

五、http 请求和 http 响应

http 请求

// HTTP请求方法(GET、POST、PUT、DELETE等)。
req.method

// HTTP请求的URL。
req.url

// 请求的URL路径名。
req.path

// 包含在URL查询字符串中的参数对象。
req.query

// 包含HTTP请求头的对象。
req.headers

// 包含在POST请求中的请求主体的对象。需要使用body-parser中间件才能访问。
req.body

// 包含路由参数的对象。例如,对于路径/user/:id,req.params.id将包含匹配的ID。
req.params

// 客户端的IP地址。
req.ip

// 请求的主机名。
req.host

// 获取HTTP请求头的指定字段的值。
req.get(field)

// 获取客户端的cookie。选项可以包括签名选项(如果cookie是加密的)。
req.cookie(name[, options])

以上是常见请求对象及方法 

http 响应

res 代表 HTTP 响应对象。通过 res,你可以设置 HTTP 响应的状态码、响应头和响应主体。

// HTTP 响应的状态码,表示请求的处理结果。例如,200 表示成功,404 表示找不到资源。
res.status(code)

//设置 HTTP 响应的响应头。name 参数是响应头的名称,value 参数是响应头的值。
res.setHeader(name, value)

//获取 HTTP 响应的响应头。name 参数是响应头的名称。
res.getHeader(name)

//移除 HTTP 响应的响应头。name 参数是响应头的名称。
res.removeHeader(name)

//设置一个 HTTP cookie,并将值存储在客户端上。
res.cookie(name, value)

//设置 HTTP 响应一个 JSON 对象、一个数组或者一个字符串。
res.json(json)

//响应一个字符串、一个数字、一个布尔值或者一个对象。
res.send(body)

//渲染一个视图模板并将结果发送到客户端。
res.render(view, [options], callback)

//将 HTTP 响应标记为附件,通常用于下载功能。filename 参数是可选的,表示要下载的文件名。
res.attachment([filename])

//将指定的文件作为 HTTP 响应发送给客户端。path 参数是文件的路径,options 参数是可选的,用于配置文件的响应选项。
res.sendFile(path[, options])

//将指定的文件作为 HTTP 下载提供给客户端。path 参数是文件的路径,filename 参数是可选的,表示要下载的文件名。
res.download(path[, filename])

//将客户端重定向到指定的 URL。
res.redirect(url)

以上是常见响应方法

六、使用路由(多文件)

创建 router.js 

const express = require('express');  
const router = express.Router();  
  
// 定义一个路由处理程序,用于处理GET请求  
router.get('/test', function(req, res) {  
  res.send('Hello World!');  
});  
  
// 定义另一个路由处理程序,用于处理POST请求  
router.post('/submit', function(req, res) {  
  res.send('Submit received!');  
});  
  
module.exports = router;

在 index.js 中引用 router.js

const express = require('express');  
const app = express();
 

const router = require('./router'); // 导入路由器对象  
// 将路由器对象添加到应用程序中
app.use(router); //(访问 localhos/test)
// 将路由器对象添加到应用程序中(加入自定义统一前缀)
app.use('/api',router); //(访问 localhost/api/test)
  
app.listen(3000, function() {  
  console.log('Server is running on port 3000');  
});

总结 

到此这篇关于用node.js搭建一个Web服务的文章就介绍到这了,更多相关node.js搭建Web服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Node.js简单入门前传

    Node.js简单入门前传

    Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。接下来通过本文给大家分享node.js 入门前传,感兴趣的朋友一起看看吧
    2017-08-08
  • npm国内镜像 安装失败的几种解决方案

    npm国内镜像 安装失败的几种解决方案

    这篇文章主要给大家总结了npm国内镜像npm安装失败的几种解决方案,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下来一起看看吧。
    2017-06-06
  • 在Node.js应用中读写Redis数据库的简单方法

    在Node.js应用中读写Redis数据库的简单方法

    这篇文章主要介绍了在Node.js应用中读写Redis数据库的简单方法,Redis是一个内存式高速数据库,需要的朋友可以参考下
    2015-06-06
  • NodeJS实现阿里大鱼短信通知发送

    NodeJS实现阿里大鱼短信通知发送

    本文给大家介绍的是nodejs实现使用阿里大鱼短信API发送消息的方法和代码,有需要的小伙伴可以参考下。
    2016-01-01
  • Node.js API详解之 util模块用法实例分析

    Node.js API详解之 util模块用法实例分析

    这篇文章主要介绍了Node.js API详解之 util模块用法,结合实例形式分析了node.js API中util模块基本功能与相关函数使用技巧,需要的朋友可以参考下
    2020-05-05
  • node.js事件轮询机制原理知识点

    node.js事件轮询机制原理知识点

    在本篇文章里小编给大家分享的是一篇关于node.js事件轮询机制的相关知识点文章,有兴趣的朋友们可以参考下。
    2019-12-12
  • Nodejs实现文件上传的示例代码

    Nodejs实现文件上传的示例代码

    这篇文章主要介绍了Nodejs文件上传的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • node.js程序作为服务并在windows下开机自启动(用forever)

    node.js程序作为服务并在windows下开机自启动(用forever)

    这篇文章主要介绍了node.js程序作为服务并在windows下开机自启动的相关资料,因为实现的功能比较简单,没有选择功能比较强大的pm2,文中选择利用了forever,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • 在Ubuntu上安装最新版本的Node.js

    在Ubuntu上安装最新版本的Node.js

    Node.js是一个软件平台,通常用于构建大规模的服务器端应用。Node.js使用JavaScript作为其脚本语言,由于其非阻塞I/O设计以及单线程事件循环机制,使得它可以交付超高的性能。
    2014-07-07
  • node.js+postman+mongodb搭建测试注册接口的实现

    node.js+postman+mongodb搭建测试注册接口的实现

    本文主要介绍了node.js+postman+mongodb搭建测试注册接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论