Tài liệu api phần còn lại mongodb | Aamir Ayyan
Khi chúng tôi xây dựng ứng dụng Web hoặc các ứng dụng phía máy chủ, việc tạo RESTful API để tương tác với máy khách trở nên vô cùng phổ biến Show Ở bài viết này, mình sẽ tạo RESTful API để hỗ trợ đủ 4 thao tác. CRUD (Tạo – Đọc – Cập nhật – Xóa) Trước khi chúng ta vào bài viết, bạn nên chuẩn bị sẵn những yêu cầu sau
OK, sau khi môi trường lập trình đã sẵn sàng, chúng ta bắt tay vào việc tạo RESTful API thôi Nội dung chính của bài viết
tạo RESTful API là một kiểu thiết kế ứng dụng trong đó quy định định dạng của địa chỉ URL và phương thức HTTP sử dụng để quản lý tài nguyên trên máy chủ Tài nguyên trên Server trong bài viết này mình giả sử là danh sách người trong Database Việc thiết kế REST cũng khá đơn giản, chúng ta sẽ định nghĩa 4 hàm xử lý 4 hành động
Cụ thể trong bài viết này thì mình sẽ thiết kế như sau #Cấu hình nút. js với Express frameworkĐể bắt đầu, chúng ta sẽ tạo một dự án mới với các phụ thuộc cần thiết. Từ cửa sổ lệnh, chúng ta thực hiện các lệnh sau npm init -y npm install express body-parser mongoose --save Kết thúc các lệnh trên, chúng ta sẽ tạo một gói. json, và cài đặt ExpressJS, Mongoose và một gói hỗ trợ chuyển dữ liệu theo cách yêu cầu từ máy khách thành dữ liệu JSON Để đơn giản, mình sẽ chọn tất cả mã nguồn vào một ứng dụng tệp. js. Tuy nhiên, điều này không được triển khai theo dự án thực tế nhé. Với dự án thực tế, các bạn nên áp dụng các quy tắc như nguyên lý RẮN để đảm bảo dự án sạch sẽ, dễ bảo trì Bạn đã tạo tệp ứng dụng. js tại thư mục gốc của dự án /** * Son Duong * https://vntalking.com * June 14, 2019 */ const Express = require("express"); const Mongoose = require("mongoose"); const BodyParser = require("body-parser"); var app = Express(); app.use(BodyParser.json()); app.use(BodyParser.urlencoded({ extended: true })); // Define REST API app.post("/person", async (request, response) => {}); app.get("/people", async (request, response) => {}); app.get("/person/:id", async (request, response) => {}); app.put("/person/:id", async (request, response) => {}); app.delete("/person/:id", async (request, response) => {}); app.listen(3000, () => { console.log("Listening at :3000..."); }); Mình sẽ giải thích một chút về đoạn code trên. Đầu tiên, chúng ta cần yêu cầu những mô-đun cần thiết như. express, mongoose và body-parser Tiếp theo, chúng ta sẽ định nghĩa API là thiết kế mục 2 ở trên bài viết. Chúng ta sẽ bổ sung logic xử lý cho từng hàm sau Cuối cùng, chúng ta khai báo ứng dụng sẽ lắng nghe cổng 3000 #Tương tác với MongoDB sử dụng MongooseĐể có thể kết nối được với MongoDB, bạn cần khai báo đúng đường dẫn Mongoose.connect("mongodb://localhost/vntalking"); Trong đó vtalking là tên cơ sở dữ liệu (tương đương với tên cơ sở dữ liệu trong SQL vậy) Lưu ý. Bài viết này mình tập trung vào các logic tương tác với MongoDB từ Nodejs. Do đó, mặc định mình sẽ xem các bạn đã biết cách tạo bộ sưu tập trong MongoDB. Nếu bạn muốn quản lý MongoDB một cách dễ dàng thì có thể sử dụng công cụ Robo3T Sau khi cấu hình kết nối xong, mình sẽ tiến hành tạo mô hình. Trong khuôn khổ ví dụ của bài viết này, chúng ta chỉ cần tạo ra một mô hình như sau const PersonModel = Mongoose.model("person", { firstname: String, lastname: String }); Mô hình này sẽ tạo một bộ sưu tập người (tương đương với việc tạo một bảng trong SQL vậy). With each document will have 2 information. tên và họ Ok, như vậy phần cấu hình với MongoDB đã hoàn tất, chúng ta tiến hành xử lý logic cho mỗi API #Tạo RESTful API và xử lý hành động logicĐầu tiên, chúng ta sẽ viết mã xử lý phần tạo mới cho một người app.post("/person", async (request, response) => { try { var person = new PersonModel(request.body); var result = await person.save(); response.send(result); } catch (error) { response.status(500).send(error); } }); Khi máy khách thực hiện một yêu cầu POST tới ứng dụng của chúng tôi. Chúng ta sẽ sử dụng PersonModel và JSON payload để lưu thông tin vào cơ sở dữ liệu Có một điểm lưu ý, tất cả những công việc tương tác với cơ sở dữ liệu đều có thể kích hoạt thời gian và bạn cần phải sử dụng cơ chế xử lý bất đồng bộ. Trước kia bạn có thể sử dụng Promise, và giờ thì hiện đại hơn, sử dụng kỹ thuật mới async và await (Hỗ trợ từ javascript ES7) Sau khi lưu dữ liệu thành công, chúng tôi sẽ trả lại kết quả cho khách hàng biết Tiếp theo, khi đã có dữ liệu, chúng ta có thể lấy dữ liệu từ cơ sở dữ liệu app.get("/people", async (request, response) => { try { var result = await PersonModel.find().exec(); response.send(result); } catch (error) { response.status(500).send(error); } }); Có hai kiểu dữ liệu. Một là lấy toàn bộ danh sách người có trong cơ sở dữ liệu, hai là lấy thông tin cụ thể của một người nào đó Trong API kịch bản này, khi khách hàng không gửi bất kỳ điều kiện kỳ lạ nào, thì sẽ trả về một danh sách những người Nếu khách hàng gửi cụ thể ID của một người nào đó, họ sẽ chỉ trả lại cho 1 người mà thôi. Thực hiện như sau app.get("/person/:id", async (request, response) => { try { var person = await PersonModel.findById(request.params.id).exec(); response.send(person); } catch (error) { response.status(500).send(error); } }); Khi client gửi ID của người đó lên, chúng ta sẽ sử dụng hàm findById() để tìm kiếm trong cơ sở dữ liệu xem có người nào tương ứng với ID đó không. Nếu tồn tại người đó thì trả lại cho khách hàng Hoàn toàn tương tự với việc cập nhật và xóa thông tin của một người khi biết ID app.put("/person/:id", async (request, response) => { try { var person = await PersonModel.findById(request.params.id).exec(); person.set(request.body); var result = await person.save(); response.send(result); } catch (error) { response.status(500).send(error); } }); app.delete("/person/:id", async (request, response) => { try { var result = await PersonModel.deleteOne({ _id: request.params.id }).exec(); response.send(result); } catch (error) { response.status(500).send(error); } }); Như vậy là chúng ta đã hoàn thành đủ 4 hành động như thiết kế ban đầu. Các bạn có thể kiểm tra ứng dụng bằng cách sử dụng Postman. Tất nhiên, đừng quên chạy ứng dụng trước khi kiểm tra trên máy chủ bằng lệnh sau ________số 8#Tổng kếtQua bài viết, chúng ta đã biết cách tạo RESTful API đơn giản rồi phải không? Trong bài viết này, mình đang sử dụng một framework để tạo API dễ dàng hơn, nếu có hứng thú, bạn có thể đọc thêm về ExpressJS framework này tại đây
Phần tiếp theo, mình sẽ cùng nhau tìm hiểu về những kỹ thuật khác của NodeJs như Promise, Event và Filestream |
Bài Viết Liên Quan
Hướng dẫn time table html css - bảng thời gian html css
<!DOCTYPE html><html><body> <h2<0h2> <<5 <6<7<<9>html1<html3 ...
Hướng dẫn what is the advantage of mongodb over sql? - lợi thế của mongodb so với sql là gì?
Bài viết này sẽ nêu chi tiết từng điểm đó để cho bạn thấy doanh nghiệp của bạn có thể hưởng lợi từ MongoDB như thế nào.Nền tảng dữ liệu phát ...
Hướng dẫn đăng ký thi đánh giá năng lực 2023
(PLO)- Chỉ tiêu xét tuyển đại học theo phương thức sử dụng kết quả những kỳ thi đánh giá năng lực năm 2023 dự kiến sẽ tăng. Thời điểm này, nhiều ...
Hướng dẫn python sort list alphabetically - danh sách sắp xếp python theo thứ tự bảng chữ cái
Điều gì sẽ xảy ra nếu bạn có một danh sách các chuỗi (mục văn bản) và bạn cần sắp xếp chúng theo thứ tự abc? Trong bài viết này, chúng tôi sẽ chỉ cho ...
Hướng dẫn zip_longest python example - ví dụ về trăn zip_longest
Python sườn Itertool là một mô -đun cung cấp các chức năng khác nhau hoạt động trên các trình lặp để tạo ra các trình lặp phức tạp. Mô-đun này hoạt động ...
Hướng dẫn connect using mongodb compass - kết nối bằng la bàn mongodb
Trong bài số 2, các bạn đã biết cách cấu hình Service để chạy MongoDB 24/7 cũng như kết nối được MongoDB Compass tới Server.Bài này Tui tiếp tục trình bày ở ...
Hướng dẫn how long does it take to learn javascript for a beginner? - mất bao lâu để học javascript cho người mới bắt đầu?
JavaScript là một ngôn ngữ quan trọng để xây dựng các trang web động. Nhưng mất bao lâu để học JavaScript? Và bạn nên bắt đầu từ đâu? Tìm hiểu thêm trong ...
Hướng dẫn how do i know if i have prime in python? - làm cách nào để biết nếu tôi có số nguyên tố trong python?
Hướng dẫn này sẽ dạy bạn cách viết chương trình Python để kiểm tra xem một số có chính hay không.number is prime or not.Nếu bạn đã từng thực hiện các bài ...
Giá taxi 2023
Cập nhật mới nhất bảng giá cước taxi Hà Nội của các hãng taxi lớn như Taxi Mai Linh, Taxi VinaSun, Taxi Group Hà Nội, Taxi Ba Sao, Taxi Thành Công, Taxi Sông Nhuệ, ...
Hướng dẫn what is advanced ajax in php? - ajax nâng cao trong php là gì?
Ajax với JSONTrong phòng thí nghiệm trước, bạn đã làm việc trên Ajax với văn bản thuần túy. Như một vấn đề thực tế, bạn có thể xử lý dữ liệu AJAX ...
Hướng dẫn python runtime error message - thông báo lỗi thời gian chạy python
Cho đến bây giờ các thông báo lỗi thiên đường đã được đề cập nhiều hơn, nhưng nếu bạn đã thử các ví dụ bạn có thể đã thấy một số. Có (ít ...
Hướng dẫn how do you add an element to an array at a given position in php? - Làm thế nào để bạn thêm một phần tử vào một mảng tại một vị trí nhất định trong php?
Một hàm có thể chèn ở cả vị trí số nguyên và chuỗi:/** * @param array $array * @param int|string $position * @param mixed $insert */ function ...
Hướng dẫn print table php - bảng in php
Rất thường xuyên, bạn sẽ cần sử dụng bảng MySQL để lưu trữ dữ liệu bên trong nó và sau đó xuất dữ liệu đó bằng cách sử dụng tập lệnh PHP. Để ...
Hướng dẫn download turbo pascal 7.0 full - tải xuống turbo pascal 7.0 đầy đủ
Borland Turbo Pascal là một trình biên dịch ngôn ngữ lập trình Pascal với môi trường phát triển tích hợp nhắm vào thị trường sở thích và cấp nhập cảnh. Có ...
Ngày tết trung thu 2023
1. Mâm cúng Rằm tháng 8 gồm những gì?2. Các bài văn khấn ngày Rằm tháng 8 – Tết trung thu 2023Hàng năm, vào dịp tết Trung thu (15/8 âm lịch), các gia đình ...
Cách tải chương trình pascal
Với cách tải và cài đặt Pascal (Turbo Pascal) người dùng có thể tạo môi trường lập trình để viết và chạy code Pascal. Cài đặt Pascal trên máy tính để làm ...
Hướng dẫn bind_param dynamically php - bind_param động php
mysqli_stmt_bind_param(Php 5, Php 7, Php 8)mysqli_stmt :: bind_param - mysqli_stmt_bind_param - liên kết các biến với câu lệnh đã chuẩn bị làm tham số -- mysqli_stmt_bind_param ...
Hướng dẫn python array attributes - thuộc tính mảng python
Python như bạn có nghĩa là nóĐược trang bị sự hiểu biết của chúng tôi về các mảng numpy đa chiều, bây giờ chúng tôi xem xét các phương thức để lập ...
Hướng dẫn how do you go over multiple lines in python? - làm thế nào để bạn đi qua nhiều dòng trong python?
Giống như C, bạn có thể chia một dòng dài thành nhiều dòng ngắn. Nhưng trong Python, nếu tôi làm điều này, sẽ có một lỗi thụt lề ... có thể không? Đã ...
Báo giá vật liệu xây dựng thanh hóa 2023
Thứ 3, 12/4/2022 | 07:59 GMT+7Giá thép tăng mạnh trong quý I/2022.Cụ thể, hiện cả nước có 90 dây chuyền sản xuất xi măng với tổng công suất 106,6 triệu tấn/năm ...