一、简介
1.1 请求方法
hapi
路由支持以下常用方法(包括,但不限于):
- GET
- POST
- PUT
- PATCH
- DELETE
- OPTIONS
官方文档介绍说,除了HEAD
方法不支持以外,其他的http请求方法都是支持的。
1.2 匹配多个请求方法
当需要匹配多个请求方法时,可以将数组作为method
的值。例如:
server.route({
method: ['GET', 'POST'],
path: '/',
handler: async (request, h) => {
return 'hello world';
}
});
要想匹配支持的全部请求方法时,可以用*
匹配任意路由方法。
1.3 动态路由
动态路由可以在路由的path
属性中通过{}
花括号对路由中的变量进行声明。例如:
server.route({
method: 'GET',
path: '/book/{id}',
handler: async (request, h) => {
return request.params.id; // 这里params的属性要和动态路由的变量名对应
}
});
二、路由的创建
2.1 创建单个路由
在《hapi.js入门系列(一)——一个简单的Hello World程序》中,已经大致讲了一下如何创建一个路由:
// 引入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();
2.2 创建多个路由
创建多个路由可以有两种方法:
- 方法一:多次使用
server.route()
方法,分别创建 - 方法二:使用一次
server.route()
方法,传入一个数组
方法一示例:
// 引入hapi依赖
const hapi = require('@hapi/hapi');
const start = async () => {
// 实例化一个server,并指定server的端口号
const server = hapi.server({ port: 3000 });
// 注册路由1
server.route({
method: 'GET',
path: '/',
handler: (request, h) => {
return 'hello world';
}
});
// 注册路由2
server.route({
method: 'GET',
path: '/login',
handler: (request, h) => {
return 'login page';
}
});
// 启动服务
await server.start();
console.log(`server is running at ${server.info.uri}`);
};
// 执行start()方法
start();
方法二示例:
// 引入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';
}
},
{
method: 'GET',
path: '/login',
handler: (request, h) => {
return 'login page';
}
}
]);
// 启动服务
await server.start();
console.log(`server is running at ${server.info.uri}`);
};
// 执行start()方法
start();