一、引言
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服务内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论