hapi.js入门系列(二)——路由

一、简介

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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值