July 11, 2016

Xây dựng ứng dụng API với NodeJS - Phần 1: Khởi tạo kiến trúc

Building a RESTful API Node and Express 4
source: https://scotch.io/wp-content/uploads/2014/04/restful-api-node-express-4-router.jpg
Loạt bài này mình sẽ giới thiệu cách tạo một ứng dụng RESTful API dựa trên NodeJS và Express4. Phần đầu này, chỉ là khởi tạo kiến trúc, và lẽ dĩ nhiên, đây không phải là cách duy nhất, nhưng đây là cách quen thuộc mà mình vẫn hay dùng xưa nay. Việc khởi tạo một ứng dụng NodeJS bây giờ có thể gọi là đơn giản nhiều lắm với những công cụ đã được hỗ trợ sẵn.

1 - Sử dụng Yeoman phát sinh cấu trúc dự án

Giới thiệu sơ về yeoman - đây là một công cụ đắc lực cho mình khi muốn tạo một dự án nào đó. Nó cho phép bạn nhanh chóng khởi tạo một cấu trúc dự án dựa trên những cấu trúc có sẵn của "thiên hạ"

1.1 - Cài đặt yeoman

sudo npm install -g yo

1.2 - Cài đặt generator

Tiếp theo đó, bạn cần cài đặt một bộ generator - đây là một bộ sub-tool đi kèm với yeoman, và thực hiện khởi tạo cấu trúc dự án của bạn từ một "thiên hạ" nào đó. Danh sách generator rất đa dạng, các bạn có thể tham khảo tại đây: http://yeoman.io/generators/. Ở đây chúng ta sẽ sử dụng bộ generator-express

sudo npm install -g generator-express

1.3 - Phát sinh cấu trúc dự án

Bây giờ nhiệm vụ chúng ta là dùng anh chàng generator vừa cài đặt để tạo cấu trúc dự án, điều này cực kỳ nhanh gọn bằng dòng lệnh sau:

yo express

Sau đó generator này sẽ hỏi bạn một số câu hỏi để khởi tạo cấu trúc dự án cho bạn. Bạn có thể tùy chỉnh tùy ý theo ý thích của mình. Generator này không hỗ trợ việc không dùng View Engine, nên bạn cứ chọn 1 cái cho vui, vì làm API không cần tới view làm gì (response toàn JSON cả mà ^^). Bên dưới là khai báo cấu trúc cho loạt bài này, mình sử dụng cơ sở dữ liệu MySQL và dùng Gulp làm công cụ build tasks cho tiện.

yo express
Các bước minh họa tạo dự án bằng generator-express

Sau khi công cụ này phát sinh cấu trúc dự án giúp cho bạn, nó cũng sẽ chạy npm install bower install để cài đặt những gói phụ thuộc. Chắc chắn không có gì cho bower nếu bạn làm giống như hình mình họa bên trên.

2 - Cấu hình và khởi chạy dự án

2.1 - Cấu hình

Việc đầu tiên có lẽ là chỉnh sửa thông tin kết nối cơ sở dữ liệu, bạn mở file config.js trong folder config để chỉnh sửa những thông tin liên quan. Ở đây bạn chú ý phần biến môi trường, generator này phát sinh nhằm hỗ trợ cho việc bạn code trên những môi trường khác nhau: development, test, production. Và lẽ dĩ nhiên, mặc định khi chạy sẽ là development.

Tùy cách mọi người cấu hình, cá nhân mình thì thích kiểu cấu hình rõ từng phần như host gì, database tên gì, ... như kiểu bên dưới

development: {
    root: rootPath,
    app: {
      name: 'app_api_tut'
    },
    port: process.env.PORT || 3000,
    db_config: {
      database: 'database_name',
      username: 'root',
      password: 'password',
      options: {
        dialect: 'mysql',
        host: 'localhost',
        port: '3306'
      }
    }
  }

Nếu bạn nào làm theo cấu hình giống mình, thì sẵn tay mở file index.js trong folder app/model, ra chỉnh lại tí tí như sau luôn
var Sequelize = require('sequelize'),
  config = require('../../config/config'),
  dbConfig = config.db_config,
  db = {};

var sequelize = new Sequelize(dbConfig.database, dbConfig.username, dbConfig.password, dbConfig.options);

2.2 - Khởi chạy dự án

Điều này rất đơn giản, vì generator này lo hết cho mình rồi, nếu bạn cũng dùng gulp để lo phần run tasks, thì bạn chỉ việc mở giao diện dòng lệnh lên, và gõ dòng lệnh gulp để khởi chạy dự án.


Khi màn hình hiển thị dòng Express server listening on port 3000 là mọi chuyện hoàn tất, bạn thử mở browser ra và nhập vào http://localhost:3000 để xem thử chuyện gì xảy ra. Mọi thứ chỉ mới bắt đầu, từ từ đi tiếp ha.

No comments:

Post a Comment