×

Cài đặt thư viện Hapi.js trong JavaScript

Hapi.js là một framework mạnh mẽ và dễ sử dụng, được thiết kế để xây dựng các ứng dụng web và dịch vụ mạng hiệu quả trong Node.js. Nó nổi bật với khả năng xây dựng API và các tính năng phong phú mà vẫn giữ được sự đơn giản và linh hoạt.

Lý do lựa chọn Hapi.js

Khi phát triển ứng dụng web hay API, việc chọn lựa một framework phù hợp là điều rất quan trọng. Hapi.js mang lại những lợi ích sau:

  1. Quản lý cấu hình tuyệt vời với khả năng thay đổi cấu trúc dự án dễ dàng.
  2. Bảo mật nâng cao thông qua các plugin và cấu hình bảo mật.
  3. Hỗ trợ mở rộng mạnh mẽ giúp phát triển ứng dụng một cách linh động.
  4. Cộng đồng phát triển mạnh với nhiều tài liệu và hỗ trợ từ cộng đồng.

Bắt đầu với Hapi.js

Để bắt đầu, bạn cần có Node.js được cài đặt trên máy tính của mình. Sau đó, bạn cần cài đặt các công cụ cần thiết và thử nghiệm mã nguồn.

1. Cài đặt Node.js

Đầu tiên, bạn cần kiểm tra xem Node.js đã được cài đặt chưa. Mở Terminal (hoặc Command Prompt) và nhập lệnh:

node -v
npm -v

Nếu Node.js chưa được cài đặt, bạn có thể tải về từ trang web chính thức tại Node.js.

2. Tạo một Project mới

Khi đã cài đặt Node.js, tiếp theo chúng ta sẽ tạo một thư mục mới cho dự án Hapi.js của bạn:

mkdir my-hapi-project
cd my-hapi-project

3. Khởi tạo Project với npm

Tại thư mục project, bạn khởi tạo bằng npm init để tạo file package.json:

npm init -y

4. Cài đặt Hapi.js

Tiếp theo, chúng ta cài đặt Hapi.js:

npm install @hapi/hapi

Xây dựng Server cơ bản với Hapi.js

Bây giờ, chúng ta sẽ viết một ứng dụng server đơn giản bằng Hapi.js để hiểu rõ hơn cách hoạt động:

1. Tạo file Server.js

Trong thư mục project của bạn, tạo một file mới tên là server.js và mở nó bằng trình soạn thảo văn bản yêu thích.

Đầu tiên, bạn cần import Hapi.js:

'use strict';

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

const init = async () => {

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

    server.route({
        method: 'GET',
        path: '/',
        handler: (request, h) => {
            return 'Hello, Hapi.js!';
        }
    });

    await server.start();
    console.log('Server running on %s', server.info.uri);
};

process.on('unhandledRejection', (err) => {
    console.log(err);
    process.exit(1);
});

init();

2. Chạy Server

Mở Terminal và chạy lệnh:

node server.js

Bạn sẽ thấy console hiển thị dòng thông báo "Server running on http://localhost:3000" nghĩa là server đã khởi động thành công.

Bây giờ, hãy mở trình duyệt và truy cập vào http://localhost:3000, bạn sẽ thấy dòng chữ "Hello, Hapi.js!".

Quản lý Routes trong Hapi.js

Routes là thành phần quan trọng trong bất kỳ ứng dụng web nào. Hapi.js cung cấp cách quản lý route rất mạnh mẽ và linh hoạt.

1. Tạo Route đơn giản

Chúng ta sẽ thêm một vài route khác để xem rõ hơn cách Hapi.js quản lý route. Mở file server.js và thay đổi phần code quản lý route như sau:

server.route({
    method: 'GET',
    path: '/hello/{name}',
    handler: (request, h) => {
        const name = request.params.name;
        return `Hello, ${name}!`;
    }
});

Route này sẽ chào hỏi người dùng khi họ nhập tên vào URL. Ví dụ: truy cập http://localhost:3000/hello/John sẽ hiển thị "Hello, John!".

2. Route với phương pháp POST và Request Payload

Chúng ta có thể tạo route với phương thức POST và xử lý dữ liệu gửi từ client:

server.route({
    method: 'POST',
    path: '/data',
    handler: (request, h) => {
        const payload = request.payload;
        return `Data received: ${JSON.stringify(payload)}`;
    }
});

Trong lệnh này, server sẽ chấp nhận dữ liệu từ client qua request payload.

3. Route với Query Parameters

Đôi khi, chúng ta cần xử lý các tham số truy vấn trong URL. Bổ sung thêm đoạn code sau để xử lý query parameters:

server.route({
    method: 'GET',
    path: '/query',
    handler: (request, h) => {
        const query = request.query;
        return `Query parameters: ${JSON.stringify(query)}`;
    }
});

Bạn có thể thử nghiệm bằng cách truy cập http://localhost:3000/query?param1=value1&param2=value2.

Sử dụng Plugins

Hapi.js có một hệ thống plugin mạnh mẽ giúp bạn mở rộng tính năng của ứng dụng một cách dễ dàng. Dưới đây là cách cấu hình plugin cơ bản:

1. Cài đặt Plugin @hapi/inert

Inert là một plugin giúp phục vụ các tệp tĩnh như hình ảnh, CSS, JS,... Cài đặt Inert:

npm install @hapi/inert

2. Sử dụng Plugin Inert

Thêm đoạn code sau vào file server.js để cấu hình plugin:

const Inert = require('@hapi/inert');

await server.register(Inert);

server.route({
    method: 'GET',
    path: '/file',
    handler: {
        file: 'path/to/your/file.ext'
    }
});

Bây giờ, truy cập http://localhost:3000/file để xem file bạn muốn phục vụ.

3. Đăng ký Plugin Tự Custom

Bạn cũng có thể tự tạo và đăng ký plugin cho ứng dụng Hapi.js của mình. Một plugin đơn giản có thể được tạo như sau:

const myPlugin = {
    name: 'myPlugin',
    version: '1.0.0',
    register: async function (server, options) {
        server.route({
            method: 'GET',
            path: '/custom-plugin',
            handler: (request, h) => {
                return 'Hello from custom plugin!';
            }
        });
    }
};

await server.register(myPlugin);

Tích hợp Cơ sở dữ liệu

1. Cài đặt Mongoose

Mongoose là một thư viện giúp làm việc với MongoDB dễ dàng hơn trong Node.js. Cài đặt Mongoose:

npm install mongoose

2. Kết nối với MongoDB

Tạo một file mới database.js để quản lý kết nối với MongoDB:

const mongoose = require('mongoose');

const connectDB = async () => {
    try {
        await mongoose.connect('mongodb://localhost:27017/yourDB', {
            useNewUrlParser: true,
            useUnifiedTopology: true
        });
        console.log('MongoDB connected...');
    } catch (err) {
        console.error(err.message);
        process.exit(1);
    }
};

module.exports = connectDB;

3. Sử dụng trong Server.js

Trong file server.js, import và sử dụng kết nối MongoDB:

const connectDB = require('./database');

connectDB();

Bây giờ, bạn đã kết nối thành công với MongoDB và có thể thao tác với dữ liệu.

Xử lý Bảo mật

1. Cài đặt Hapi Authentication

Cài đặt gói cần thiết để bảo mật ứng dụng, ví dụ @hapi/cookie để sử dụng cookie-based authentication:

npm install @hapi/cookie

2. Cấu hình Authentication

Cấu hình bảo mật trong server.js:

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

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

await server.register(Cookie);

server.auth.strategy('session', 'cookie', {
    cookie: {
        name: 'session',
        password: 'password-should-be-at-least-32-characters',
        isSecure: false
    },
    redirectTo: false
});

server.auth.default('session');

3. Sử dụng Authentication trong Routes

server.route({
    method: 'GET',
    path: '/private',
    options: {
        auth: 'session'
    },
    handler: (request, h) => {
        return 'You are authenticated!';
    }
});

Bây giờ, khi truy cập vào /private, bạn sẽ cần chứng thực để xem được nội dung.

Tổng kết

Hapi.js là một framework mạnh mẽ, linh hoạt và dễ sử dụng cho các nhà phát triển Node.js. Bằng cách làm theo các bước và ví dụ trên, bạn có thể dễ dàng cài đặt, cấu hình và tạo các ứng dụng web và API động. Hãy tiếp tục khám phá và mở rộng ứng dụng của bạn với Hapi.js!

Comments