Xây dựng api adayroi

Công ty cổ phần thương mại Vạn Tín Việt

Tạo dự án api adayroi

 

Đầu tiên bạn cần phải pull code về phía máy tính của bạn

sau đó bật công cụ webstorm lên và mở thư mục code đó

ứng dụng nodejs này sử dụng mongodb. do vậy bạn cần phải cài mongodb nhấn vào đây để xem hướng dẫn

Tiếp theo bạn cần công cụ để quản lý mongodb nhấn vào đây để tải về

Sau khi cài xong mongodb bạn cần import db vào đây là db mẫu các bạn tải tại đây để import bạn xem hướng dẫn ở đây

 

Sau khi cài đặt mongodb thành công bạn chạy lệnh sau

Bạn tạo một db có tên là expresscart

Sau đó bạn cần import db mẫu vào

Bạn cần cài đặt tool để import, trước khi thực hiện inport nhé bạn nhấn vào đây để xem cách cài đặt tool này  trên window nhé

Bạn chạy lệnh sau

mongorestore -d expresscart /Users/mac/Downloads/expresscart

Trong đó phần màu đỏ là đường dẫn tới thư mục chứa db mà bạn vừa tải về

Chú ý: có nhiều phiên bản mongo do đó cũng có những cách import khác nhau, do vậy nếu bạn không import được thì lên google tìm kiếm nhé

Sau khi bạn import thành công thì bạn sẽ nhìn thấy các bảng như hình dưới đây

anh20

 

 

Bước tiếp theo chúng ta cần tải source code api_adayroi về. các bạn nhấn vào đây để tải bộ source node về 

Chú ý bộ source này đã code module node rồi, nên không cần phải chạy npm install

Sau khi giải nén xong các bạn bật webstorm lên và mở thư mục này ra

chúng ta sẽ có như hình sau

anh21

 Sau đó các bạn mở terminal trên websotrm để chạy lệnh sau

anh22

pm2 start app.js --watch

Chú ý nếu chưa có pm2

bạn cần chạy lệnh sau để cài npm install pm2

sau đó gõ lại lệnh như trên là được

Sau đó các bạn ở trình duyệt lên và gõ địa chỉ http://localhost:1114/doc

Nếu bạn nhìn thấy như sau thì ok

anh23

Như vậy là các bạn đã cài xong một con server api_adayroi của node js. việc tiếp theo là các bạn cần phải viết api để app có thể gọi đến nó và hiển thị dữ liệu lên

 

Cài đặt mongorestore trên window

Đây là công cụ để import db expresscart vào mongodb

Đầu tiên các bạn vào đường linh sau nhấn vào đây để vào đường link này

Tại đây các bạn tìm đến dòng có nội dung sau "

MongoDB Command Line Database Tools Download

"

hoặc các bạn có thể nhìn như hình

anh29

Sau đó các bạn tìm đúng phiên bản window của các bạn. tiếp theo các bạn tải về, sau đó giải nén ra

tiếp theo bạn copy thư mục giải nén của mình vào một thư mục nào đó để lưu lại, tránh tình trạng xóa mất

Ví dụ tôi lưu ở thư mục d:/study/mongotool

Bây giờ các bạn mở thư mục này ra, bạn sẽ nhìn thấy thư mục bin

d:/study/mongotool/bin bạn nhớ đường dẫn này. tiếp theo bạn chạy

Thêm thư mục vào biến PATH

Để bắt đầu, nhấp chuột phải vào biểu tượng Máy tínhhoặc PC nàytrên màn hình và chọn Thuộc tính. Nếu bạn chưa có biểu tượng đó trên màn hình, bạn có thể thêm bất kỳ biểu tượng máy tính để bàn nào bị thiếu dễ dàng.

computer properties

Trên Hệ thốngmạnh mẽ, bạn sẽ thấy liên kết Cài đặt hệ thống nâng caoở phía bên trái.

advanced system settings

Thao tác này sẽ hiển thị hộp thoại Thuộc tính Hệ thống, hộp thoại này đã được mở cho tab Nâng cao. Tiếp tục và nhấp vào nút Biến môi trườngở dưới cùng.

environment variables

Trên Biến môi trườnghộp thoại, bạn sẽ thấy hai bộ biến: một cho biến người dùng và biến khác cho biến hệ thống. Cả hai danh sách đều có biến PATH, vì vậy bạn phải quyết định biến nào cần chỉnh sửa.

edit environment variables

Nếu bạn chỉ cần các lệnh cho tài khoản người dùng của riêng bạn, sau đó chỉnh sửa biến người dùng. Nếu bạn cần nó để làm việc trên hệ thống máy tính bất kể người dùng đã đăng nhập thì hãy chỉnh sửa biến hệ thống. Nhấp vào Đường dẫnvà sau đó nhấp vào Chỉnh sửa.

add new envrionment variable

 

Bây giờ ban bổ xung d:/study/mongotool/bin  vào PATH là xong, giờ bạn sẽ quay lại để import db vào nhé

Xây dựng api doc cho frontend cho item

Phần này giúp chúng ta xây dựng nội dung doc (Tài liệu) của api

Tên file cần tạo items.xml nhớ là có s nhé

Nơi tạo file: apps/ecommerce/api_doc

Nội dung file

 

<?xml version="1.0" encoding="utf-8"?>
<list_api>
<scope type="get" route="" authorization="false">
<content summary="get list item" description="get list item" type="list">
<parameters name="Content-Type" type="string" required="true" in="header" example="application/json" />
<parameters name="Authorization" type="string" required="true" in="header" example="Bearer 123" />
<parameters name="limit" type="string" description="Limit" in="query" example="20" />
<parameters name="start" type="string" description="start" in="query" example="0" />
</content>
</scope>

<scope type="get" route="/{id}" authorization="false">
<content summary="get item by id" description="get item id" type="item">
<parameters name="Content-Type" type="string" required="true" in="header" example="application/json" />
<parameters name="Authorization" type="string" required="true" in="header" example="Bearer 123" />
<parameters name="id" type="string" description="id" in="path" example="" />
</content>
</scope>
</list_api>

Chú ý: các item

 

Quan sát fiile item.xml này ta thấy có 2 phần api

màu vàng: là api lấy ra danh sách car, theo điều kiện dữ liệu truyền vào là limit: là số bản ghi cần lấy, start: bắt đầu lấy từ vị trí nào

Màu xanh nhạt:  là api lấy ra một item bởi id đầu vào là id của item đó

Sau khi bạn lưu lại thì server sẽ tự reset

sau đó bạn mở website http://localhost:1114/doc/#/

Nếu bạn thấy api car này thì bạn đã thành công trong việc hiển thị api doc rồi

anh24

Tạo table items vào db

Mở file : lib/db.js

Kéo xuống dòng gần cuối bổ xung đoạn

db.items = db.collection('items');

 

vào như hình

anh35

Xây dựng table cho items

Tên file items.js

Nơi tạo file : admin/apps/ecommerce/tables

Nội dung file :

var table = require(`${path_root}/lib/mvc/tables/Table`);
class Items extends table{
constructor(req, res,next){
super(req, res,next);
this._id="";
this.item_name="";
this.added_date="";
      //Nếu có thêm các trường thì bổ xung ở đây
//hiện mới có rất ít các trường của item, do đó tùy từng thuộc tính và kiểu dữ liệu mà các bạn bổ xung vào đây nhé
 // chú ý : các trường nên trùng với các trường của item trong viewobject của app android nhé

}
}
module.exports =Items;

Xây dựng model cho item.js

Nơi tạo file apps/ecommerce/models

Tên file : item.js

Nội dung file :

var modelfrontenditem = require(`${path_root}/lib/mvc/models/modelfrontenditem`);
const express = require('express');
var model = require(`${path_root}/lib/mvc/models/model`);
class Item extends modelfrontenditem {

tableName() {
return "items";
}
async getItem(req, res, next,id) {
const item= await super.getItem(req, res, next,id);

return item;
}



}
module.exports = Item;

Xây dựng model cho items.js

Tên file items.js

Nơi tạo file : apps/ecommerce/models

Nội dung file

var modelfrontendlist = require(`${path_root}/lib/mvc/models/modelfrontendlist`);
class Items extends modelfrontendlist {
constructor() {
super();
}
tableName() {
return "items";
}
async getList(req, res, next){
let list_item= await super.getList(req, res, next);

return list_item;
}

}

module.exports = items;

Xây dựng view cho items

Bạn tạo một thư mục items trong apps/ecommerce/views

tiếp theo bạn tạo file có tên view.json.js là trong thư mục apps/ecommerce/views/items

Nội dung file 

const factory = require(`${path_root}/lib/Factory.js`);
const viewfrontend=require(`${path_root}/lib/mvc/views/view`);
class items_json extends viewfrontend{
// sử lý bất đồng bộ để lấy dữ liệu, nếu bạn nào chưa biết về sử lý bất đồng bộ thì xem ở đây nhé, nhưng trước mắt thì chưa cần tìm hiểu ngay
static async display(view, type, req, res, next) {
const model = require(`${path_root}/lib/mvc/models/model`);
const input=factory.getInput(req);
let id="";

// do trong các api của chúng ta chỉ có 2 phần đó là lấy ra danh sách và lấy item, nên chúng ta sẽ chia thành 2 điều kiện trong case, nếu như chúng ta
// có nhiều hơn thì bổ xung vào nhé
switch (type) {
case "list":
const modelItems = model.getInstance("items",0,req, res, next);
const listItem = await modelItems.getList(req, res, next);
return {
result:"success",
code:200,
errorMessage:"",
data:listItem
};
case "item":
id=input.getString('id',"");
var modelItem = model.getInstance("item",0,req, res, next);
const item=await modelbanner.getItem(req, res, next,id);
return {
result:"success",
code:200,
errorMessage:"",
data:item
};
}
};
}
module.exports = items_json;

 

Kiểm tra kết quả xem đã dựng 2 api list và item thành công chưa

Sau khi các bạn làm những bước trên, chúng ta đã  thành công với các bước cơ bản, bây giờ bạn cần kiểm tra kết quản

Mở website api_adayroi lên

chạy thử làm theo hướng dẫn như sau

anh26

 

Kiểm tra kết quả:

 Nếu bạn thấy các kết quả như sau thì xin chúc mừng bạn, bạn đã làm thành công ở bước dựng api

anh27

Trường hợp nếu kết quả trả về không như trên, chúng ta cần phải kiển tra log trên server báo ra ra sao

chúng ta làm như sau

1.Mở teminal trong webstorn

gõ lệnh sau

pm2 log app

anh28

Sau đó nhấn enter.

Tại đây bạn sẽ nhìn thấy các dòng thông báo lỗi, tùy theo lỗi mà các bạn fix nhé.

 

Cám ơn bạn đã đọc tài liệu của chúng tôi

Công ty cổ phần thương mại Vạn Tín Việt

0936.006.058
0936.006.058