source: https://scotch.io/wp-content/uploads/2014/04/restful-api-node-express-4-router.jpg |
Service User
Chúng ta sẽ thêm một phương thức login vào trong tập tin user.js trong thư mục app/services, nhiệm vụ là tìm kiếm một user có cùng email, và kiểm tra xem password nhập vào có đúng không, nếu mọi thứ hợp lý thì trả kết quả về là true ngược lại thì là false. Đoạn mã được thể hiện như bên dưới.return { addNewUser: function (user, cb) {...}, login: function (email, password, cb) { User.findOne({ where: {email: email} }) .then(function (instance) { if (!instance) { return cb(null, false); } var user = _.clone(instance.dataValues); if (user.password !== password) { return cb(null, false); } return cb(null, true); }) .catch(function (error) { return cb(error); }); }
Controller User
Bây giờ chúng ta sẽ thêm một router mới vào controller user, để thực hiện cho việc login. Để an toàn cho việc login, thì thường được dùng theo phương thức POST, thay vì dùng GET thông thường để lấy dữ liệu. Chúng ta cập nhật lại tập tin user.js trong thư mục app/controllers theo nội dung như bên dưới.router.post('/login', function (req, res, next) { var email = req.body.email, password = req.body.password; if (!email || !validator.isEmail(email)) { var error = new Error('Email is required or is invalid email format'); error.status = 400; return next(error); } if (!password) { var error = new Error('Password is required'); error.status = 400; return next(error); } userService.login(email, password, function (error, isSuccess) { if (error) { return next(error); } return res.json({message: isSuccess ? "Successful" : "Fail"}); }); });
Để thử nghiệm, chúng ta cần thực hiện như phần trước, sử dụng CURL là nhanh nhất.
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'email=abc@demo.com&password=123456' "http://localhost:3000/user/login"
Nếu mọi chuyện không có lỗi gì phát sinh, bạn sẽ thấy thông báo tương tự như sau:
{ "message": "Successful" }
Vậy là hoàn tất cho phần này. Cũng mỏi tay rồi, hẹn phần tiếp theo vậy.
Xây dựng ứng dụng API với NodeJS - Phần 2.1: CRUD - Create
source:
git clone https://github.com/tmquang6805/api-express-tut-demo.git api_tut cd api_tut git checkout 5575aba
No comments:
Post a Comment