教程 > hapi 中文教程 阅读:73

hapi 中文教程

hapi 是一个 Node.js Web 服务框架。 hapi 提供了一个坚实的基础,通过提供对插件、身份验证、缓存、输入验证和更多基本功能的内置支持,我们可以完全专注于构建应用程序,而不是所使用工具的细节!

安装 hapi

创建一个新目录 hapi_project,然后进入目录:

  • 运行: cd hapi_project,这将进入创建的项目文件夹。
  • 运行: npm init 并按照提示进行操作。 这将为我们生成一个 package.json 文件。
  • 运行:npm install @hapi/hapi,这将安装最新版本的 hapi 作为 package.json 中的依赖项。
$ mkdir hapi_project
$ cd hapi_project
$ npm init
$ npm install @hapi/hapi

hapi 安装

就是这么简单! 你现在已经做好了创建一个 hapi 应用的全部准备。


创建一个Web服务器

最基本的Web服务器代码如下:

'use strict';

const Hapi = require('@hapi/hapi');

const server = Hapi.server({
    port: 3000,
    host: 'localhost'
});

const init = async () => {

    await server.start();
    console.log(`Server running at: ${server.info.uri}`);
};

process.on('unhandledRejection', (err) => {

    console.log(err);
    process.exit(1);
});

init();

首先引入 hapi,之后我们创建一个 web 服务器并且配置好 host 以及需要监听的端口,最后我们启动这个服务器,并且将运行的信息输出到日志中。

Web 服务器可以通过以下方式创建:指定主机名、填写IP地址、Unix socket文件或者通过Windows管道绑定到指定的服务器。更多细节内容请参考 API reference


添加路由

现在已经有了一个简单的Web服务器,下面将添加两条路由:

'use strict';

const Hapi = require('@hapi/hapi');

const server = Hapi.server({
    port: 3000,
    host: 'localhost'
});

server.route({
    method: 'GET',
    path: '/',
    handler: (request, h) => {

        return 'Hello, 迹忆客(jiyik.com)!';
    }
});

server.route({
    method: 'GET',
    path: '/{name}',
    handler: (request, h) => {

        return 'Hello, ' + encodeURIComponent(request.params.name) + '!';
    }
});

const init = async () => {

    await server.start();
    console.log(`Server running at: ${server.info.uri}`);
};

process.on('unhandledRejection', (err) => {

    console.log(err);
    process.exit(1);
});

init();

将以上代码保存至 server.js 之后通过命令 node server.js 启动服务器。在浏览器中访问 http://localhost:3000, 你将会看到以下文本 “Hello, 迹忆客(jiyik.com)!”。

hapi 第一个示例开启服务

之后再访问 http://localhost:3000/stimpy 你将会看到 "Hello, stimpy!"。

hapi hello stimpy

请注意这里使用了 URI 编码, 这可以有效地防止内容注入攻击。 因此,尽量使用内容编码去处理用户输入的信息。

method 可以使用任何有效的 HTTP 方法或者 HTTP 方法数组,又或者使用*去通配所有方法。path 定义了该路径下所包含的参数,可以为可选参数,数字以及通配符。更多细节内容请参考 路由教程

查看笔记

扫码一下
查看教程更方便