文章所使用各技术、框架版本一览
名称 | 版本 |
---|---|
Node.js | 12.15.0 |
hapi.js | 20.1.0 |
创建文件夹hapi-project
,并进入该目录
# 创建文件夹
mkdir hapi-project
# 进入hapi-project文件夹
cd hapi-project
要使用package.json
文件保管项目的依赖,需要先初始化一个package.json
文件。
npm init
直接使用npm
安装即可,当然也可以使用cnpm
等其他包安装工具。
npm i @hapi/hapi --save
[注] 在以往版本的hapi,是直接使用 npm i hapi
,如果此处使用该命令,会默认安装18版本的hapi,要想安装20版本的hapi需要使用 npm i @hapi/hapi
命令。
在hapi-project
文件夹下,创建一个index.js
文件,作为项目的入口文件。
在index.js
中编写创建服务的代码:
// 引入hapi依赖
const hapi = require('@hapi/hapi');
const start = async () => {
// 实例化一个server,并指定server的端口号
const server = hapi.server({ port: 3000 });
// 启动服务
await server.start();
console.log(`server is running at ${server.info.uri}`);
};
// 执行start()方法
start();
在终端输入如下命令,启动服务:
node ./index.js
启动后,终端会打印内容:server is running at ***:3000
我们的服务启动在3000端口,此时可以查看本机启动的端口已验证我们的服务是否正常启动:
netstat -tunlp | grep 3000
netstat -ano | findStr 3000
可以看到是有服务在监听0.0.0.0:3000
的,此时就意味着服务已经正常启动了。
在上面index.js
的基础上,添加一个路由。
hapi的路由是通过server.route()
方法进行添加的,相关代码如下:
// 引入hapi依赖
const hapi = require('@hapi/hapi');
const start = async () => {
// 实例化一个server,并指定server的端口号
const server = hapi.server({ port: 3000 });
// 注册路由
server.route({
method: 'GET',
path: '/',
handler: (request, h) => {
return 'hello world';
}
});
// 启动服务
await server.start();
console.log(`server is running at ${server.info.uri}`);
};
// 执行start()方法
start();
这里我们添加了一个路由,该路由的请求方法是GET
方法,路由的path
值是/
,handler
中定义了路由的路由控制器。
[注]路由控制器就是路由的逻辑实现部分。一般多层架构还会将路由控制器进行更进一步的细化分层。
此时,浏览器访问127.0.0.1:3000
就可以看到返回了内容hello world
。
[注] 在以前的版本中,路由的handler方法返回内容使用的是 reply
方法,在20版本中,是直接使用 return
关键字进行返回,直接将要返回的内容放在 return
关键字后即可。