Viblo Code
+1

Tìm hiểu nodejs và xây dựng ứng dụng cơ bản [P2]

RESTful Web Service trong Node.js

RESTful web service là một tập hợp các giao thức chuẩn được sử dụng cho mục đích trao đối giữa hệ thống và ứng dụng . Các ứng dụng phần mềm được viết bởi các ngôn ngữ khác nhau và chạy bởi các nền tảng khác nhau có thể sử dụng web service để trao đổi dữ liệu.

Web service dựa trên các kiến trúc REST được biết như RESTful webservice . Những webservice sử dụng phương thức HTTP để triển khai các định nghĩa kiến trúc REST. các phương thức HTTP được sử dụng trong REST GET, PUT, POST và DELETE. Công nghệ REST thường được sử dụng với công nghệ SOAP (Simple Object Access Protocol) vì RES tốn băng thông ít hơn và sử dụng hiệu quả trên Internet Với việc sử dụng đám mây ngày càng tăng, các API đang là xu hướng mới của dịch vụ web. REST là một sự lựa chọn hợp lý để xây dựng các API cho phép người dùng kết nối và tương tác với các dịch vụ đám mây. Các API RESTful nổi tiếng được sử dụng như Amazon, Google, LinkedIn và Twitter. Vậy các API RESTful hoạt động như thế nào.

Xây dựng API RESTful với Nodejs

Thiết lập máy chủ

Hãy cài đặt Express và nodmon, Express sẽ được sử dụng để tạo ra máy chủ trong khi nodmon sẽ giúp theo dõi các thay đổi đối ứng dụng bằng cách xem các tệp đã thay đổi và tự động khởi động lại máy chủ.

npm install --save-dev nodemon
npm install express --save

Khi cài đặt thành công tệp package.json sẽ được tạo ra. bạn có thể thêm các package khác bằng command > npm install <package_name>

Mở tệp server.js và nhập / sao chép mã dưới đây vào đó

var express = require('express'),
  app = express(),
  port = process.env.PORT || 3000;

app.listen(port);

console.log('todo list RESTful API server started on: ' + port);

Trên terminal chạy npm run start để chạy máy chủ

Trước hết, chúng ta hãy cài đặt mongoose npm install mongoose --save . option --save sẽ giúp chúng ta lưu tên package vào file package.json


'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var TaskSchema = new Schema({
  name: {
    type: String,
    required: 'Kindly enter the name of the task'
  },
  Created_date: {
    type: Date,
    default: Date.now
  },
  status: {
    type: [{
      type: String,
      enum: ['pending', 'ongoing', 'completed']
    }],
    default: ['pending']
  }
});

module.exports = mongoose.model('Tasks', TaskSchema);

Thiết lập routers

'use strict';
module.exports = function(app) {
var todoList = require('../controllers/todoListController');

  // todoList Routes
  app.route('/tasks')
  .get(todoList.list_all_tasks)
  .post(todoList.create_a_task);

  app.route('/tasks/:taskId')
    .get(todoList.read_a_task)
    .put(todoList.update_a_task)
    .delete(todoList.delete_a_task);
};

Thiết lập controller


'use strict';

var mongoose = require('mongoose'),
Task = mongoose.model('Tasks');
exports.list_all_tasks = function(req, res) {
  Task.find({}, function(err, task) {
    if (err)
      res.send(err);
    res.json(task);
  });
};

exports.create_a_task = function(req, res) {
  var new_task = new Task(req.body);
  new_task.save(function(err, task) {
    if (err)
      res.send(err);
    res.json(task);
  });
};

exports.read_a_task = function(req, res) {
  Task.findById(req.params.taskId, function(err, task) {
    if (err)
      res.send(err);
    res.json(task);
  });
};

exports.update_a_task = function(req, res) {
  Task.findOneAndUpdate({_id: req.params.taskId}, req.body, {new: true}, function(err, task) {
    if (err)
      res.send(err);
    res.json(task);
  });
};

exports.delete_a_task = function(req, res) {
  Task.remove({
    _id: req.params.taskId
  }, function(err, task) {
    if (err)
      res.send(err);
    res.json({ message: 'Task successfully deleted' });
  });
};

Tạo file server.js và bật mongodb để bắt đầu chạy

var express = require('express'),
  app = express(),
  port = process.env.PORT || 3000,
  mongoose = require('mongoose'),
  Task = require('./api/models/todoListModel'), //created model loading here
  bodyParser = require('body-parser');
// mongoose instance connection url connection
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/Tododb'); 

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var routes = require('./api/routes/todoListRoutes'); //importing route
routes(app); //register the route
app.listen(port);

Thêm middleware

Middleware về cơ bản chặn các yêu cầu http gửi đến và để có thể thực hiện theo các chủ đề khác nhau, từ xác thực cho đến xác nhận

app.use(function(req, res) {
  res.status(404).send({url: req.originalUrl + ' not found'})
});

Câu lệnh khởi động server nodejs node server.js

Sử dụng Postman để test. bạn vào địa chỉ http://localhost:3000/tasks

Tham khảo.

https://www.codementor.io/olatundegaruba/nodejs-restful-apis-in-10-minutes-q0sgsfhbd http://searchmicroservices.techtarget.com/definition/RESTful-API


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.