Tìm hiểu về Webservice và RESTful WebService
Sơ sơ về Node

Ta có thể xấy dựng webservice chỉ bằng node thôi cũng được cơ mà vậy thì code sẽ rất cực → ta sẽ sử dụng các thư viên và framwork để công việc code đơn giản hơn.

Express

Cơ bản Express giống http của node vậy, là một package chuyên về viết webservice.

npm i express body-parser moongose cors

express
là framwork express
body-parser
là thư viên cho phép ứng dụng của ta đọc được phần body của request (req.body) nếu không thì đọc req.body sẽ bị lỗi.
moongose
là một ORM cơ bản để kết nối với cơ sở dữ liệu MongoDB
cors
giúp tránh lỗi
Cross-Origin Resource Sharing
khi trình duyệt kết nối tới webserver, nếu là app mobile hay ứng dụng desktop thì sẽ không gặp lỗi này.

const express = require('express');
// load express vào ứng dụng
const bodyParser = require('body-parser');
const cors = require('cors');
const mongoose = require('mongoose');
mongoose.connect('địa chỉ ip của database');
<- kết nối db

const app = express();
// định nghĩa đối tượng app, là một ứng dụng express.

// Tuỳ chỉnh cho app, ta sẽ thêm body-parser và cors cho app
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(cors());

// setup port của app
var port = process.env.PORT || 3000;

const router = require('./routers/router.js');
// phải gắn router với app
app.use('/api', router);
<- gắn router xử lí khi người dùng GET địa chỉ localhost:3000/api/

// Chạy server
app.listen(port, () => {
console.log(`server is start at http://localhost:${port}/`);
}

File router.js
API
0
Route
HTTP Action
ý nghĩa
1
/api/categories
GET
Lấy hết danh sách tất cả categories
2
/api/categories
POST
Tạo một category mới
3
/api/categories/:cate_id
GET
Lấy dữ liệu của category có id = cate_id
4
/api/categories/:cate_id
PUT
Cập nhật dữ liệu của category có id = cate_id
5
/api/categories/:cate_id
DELETE
Xoá dữ liệu của category có id = cate_id
There are no rows in this table
5
Count
const express = require('express');
// Để ứng dụng có cấu trúc hơn và dễ mở rộng hơn ta sẽ dùng router của express để thể hiện
// nhưng đường dẫn api mà app hỗ trợ.
const router = express.Router();

//
middleware sẽ gọi với tất cả các request trong /api
router.use(function(req,res,next){
console.log('something');
next();
});
//
có thể gắn middle ware với 1 router như sau router.get('/', middleWarehere, function(..
router.get('/', function(req, res){
res.json({ message: 'welcome hooman!' });
});

//
Làm việc với database đây nè POST /api/categories
router.post('/categories', function(req, res){
var category = new Category();
<- Tạo một schema đối tượng.
=
// cái này nằm trong req.body
// save lại
category.save(function(err, category){
if(err) res.send(err);
res.json({ 'id':
});
// gửi trả id về cho use
});
});

//
GET /api/categories
router.get('/categories', function(req, res){
Category.find(function(err, categories){
if(err) res.send(err);
res.status(200).json(categories);
<- trả về xem status code
});
});

// GET /api/categories/:cate_id
//
:cate_id sẽ nằm trong req.params
//
Mấy cái PUT, DELETE cũng làm giống vậy
router.get('/categories/:cate_id', function(req, res){
Category.findById(req.params.cate_id, function(err, category){
if(err) res.status(404).send(err);
res.json(category);
});
});

var Category = require('../models/category');

Middleware là cái chi chi nữa @@.
Giả sử ta muốn việc gì đó xảy ra, mỗi khi có request tới URI đó (ví dụ verify use, hoặc kiểu tra quyền các kiểu) thì ta có thể sử dụng middleware
Nếu ta muốn dùng middleware với tất cả các route nằm trong router đó thì ta sẽ dùng
router.use((req, res, next) => { // do something });
hoặc là gắn middleware ngoài server.js
app.use('/api', middleWare(), router);
Nhớ là phải dùng next() trong middleware, nghĩa là sau khi làm hết các việc trong middleware thì nó sẽ chạy vào route ở trong.

Database đồ

Với database ta sẽ sử dụng mongodb
để cấu hình database ta có thể làm cơ bản như sau
Chỉnh moogose connection trong server.js ở trên
Định nghĩa một object biểu hiện cho dữ liệu trong database, ta sẽ biểu diễn dữ liệu categories của database
// app/models/category.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const CategorySchema = new Schema({
id: Interger,
name: String
});

module.exports = mongoose.model('Category', CategorySchema);
Nạp schema vào nơi cần xài (nhìn lên trên)

Secure - IAM - phân quyền


Realtime


Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.