Trình điều khiển API VS giống như REST
Cách phổ biến nhất để truy cập dữ liệu từ các dự án của bạn theo truyền thống là sử dụng trình điều khiển. MongoDB có trình điều khiển cho nhiều ngôn ngữ lập trình khác nhau. Chúng cho phép bạn gọi các chức năng khác nhau, bao gồm bao gồm các hoạt động tạo, đọc, cập nhật, xóa [CRUD], từ trong dự án của bạn bằng ngôn ngữ bạn chọn.
Chúng tôi có nhiều bài viết về cách thức dậy và chạy bằng trình điều khiển MongoDB cho ngôn ngữ bạn chọn. Vì vậy, nếu bạn muốn sử dụng trình điều khiển, đây vẫn là một tùy chọn hợp lệ.
Dưới đây là danh sách một số hướng dẫn hiện có sử dụng trình điều khiển hiện tại, có khả năng trong ngôn ngữ/khung của bạn lựa chọn:
- Express.js và MongoDB REST API Hướng dẫn
- Cách sử dụng Mern Stack: Hướng dẫn đầy đủ
- Tích hợp TypeScript với Hướng dẫn MongoDB
- Cách sử dụng Atlas MongoDB với .NET/.NET Core
- Xây dựng API RESTful với bình, MongoDB và Python
Tuy nhiên, có những lúc bạn có thể không muốn sử dụng trình điều khiển, ví dụ, nếu đó là một ứng dụng hoặc tập lệnh dựa trên dòng lệnh hoàn toàn, chẳng hạn như ứng dụng dựa trên Curl để gửi các yêu cầu REST hoặc GraphQL qua HTTP.
Cài đặt trình điều khiển và tạo các điểm cuối cho ứng dụng của bạn có thể thực hiện các cuộc gọi đến cơ sở dữ liệu có thể mất thời gian và nếu bạn có một trường hợp sử dụng rất đơn giản, chẳng hạn như CRUD, chi phí thêm này là không cần thiết. Đây là nơi API dữ liệu ATLAS MongoDB mới xuất hiện.
Sử dụng API dữ liệu ATLAS mới từ các ngôn ngữ khác nhau
Cũng như Curl, bạn có thể gọi API dữ liệu từ nhiều ngôn ngữ khác nhau. Tất cả những gì nó cần là một cách để thực hiện các cuộc gọi HTTP.
Trên thực tế, trong Atlas, chúng tôi thậm chí còn cung cấp cho bạn các đoạn mã bằng các ngôn ngữ khác nhau, ngay từ giao diện người dùng, để bạn bắt đầu thực hiện các cuộc gọi để tìm tài liệu.
- Nhấp vào tùy chọn API Data Data [Preview] từ thanh bên trái.
- Nhấp vào nút Kiểm tra API API của bạn ở góc trên cùng bên phải.
- Chọn cụm, cơ sở dữ liệu và bộ sưu tập của bạn từ các menu thả xuống, sau đó chọn ngôn ngữ bạn muốn từ hộp thả xuống ở phía dưới.
Tìm hiểu thêm về các hoạt động khác, chẳng hạn như viết tài liệu, bạn có thể thực hiện trong tài liệu API dữ liệu của chúng tôi.
Bản tóm tắt
Trong bài viết này, bạn đã tìm hiểu về cách bạn có thể bắt đầu ngày hôm nay với API dữ liệu ATLAS mới mà không cần phải tạo các điểm cuối của riêng bạn. Khi bạn không yêu cầu một ứng dụng đầy đủ, chỉ các hoạt động của CRUD, API dữ liệu ATLAS giúp bạn bắt đầu dễ dàng chỉ trong vài phút. Bạn thậm chí có thể nhận được sự giúp đỡ từ Atlas UI để giúp bạn bắt đầu với các đoạn mã cho ngôn ngữ yêu thích của bạn.
Câu hỏi thường gặp
MongoDB có API giống như phần còn lại không?
Xây dựng API REST với Express, Node và MongoDB
Thực hiện theo với hướng dẫn này để thêm MongoDB Atlas làm kho lưu trữ dữ liệu cho các ứng dụng của bạn, bằng cách tạo NodeJS và Express Web Rest API.
Kiến trúc dự án
Bạn có thể khám phá dự án đầy đủ trong repo GitHub sau:
- Chi nhánh chính - Dự án đã hoàn thành
- Chi nhánh sơ khai - Điểm bắt đầu để làm theo hướng dẫn này
Express cho phép chúng tôi tạo một máy chủ cấp giữa chạy giữa các cấp độ back-end.
Máy chủ Express.js cũng kết nối với cụm Atlas MongoDB thông qua trình điều khiển Node.js. Nếu bạn muốn tìm hiểu thêm về MongoDB và Node.js, hãy đọc bài viết sau.
Cuối cùng, ứng dụng mặt trước của chúng tôi sẽ được viết trong React để sử dụng các điểm cuối API REST được lưu trữ trên máy chủ Express.js. Ứng dụng này là một ứng dụng giống như Tinder cho cơ sở dữ liệu sample_airbnb, chứa thông tin trên các danh sách khác nhau, có sẵn như là một phần của bộ dữ liệu mẫu bạn có thể tải vào cụm Atlas.
Người dùng có thể vuốt các thẻ danh sách để lưu hoặc thả chúng và nhấn nút giống như trên mạng để thêm lượt thích. Ngoài ra, một cú nhấp chuột đôi sẽ hiển thị chi tiết về thẻ niêm yết cụ thể được trình bày.
Cây dự án
Dưới đây là các tệp chính trong dự án:
- người phục vụ/
- db
- conn.js
- tuyến đường
- record.js
- server.js
- config.env
- db
- app/listings/
- public/
- src/
- App.js
- App.css
- index.js
Thư mục máy chủ của máy chủ lưu trữ ứng dụng máy chủ Express.js và tất cả các phụ thuộc của nó. Các tệp chính ở đây là:
- DB DB/Conn.JS,: phơi bày kết nối toàn cầu với cơ sở dữ liệu Atlas bằng cách xuất khách MongoDB mà bất kỳ mô -đun nào khác cũng có thể sử dụng.
- Các tuyến đường/record.js của Nhật Bản: phơi bày các điểm cuối API REST và thực hiện logic kinh doanh của họ đối với cụm Atlas.
- Máy chủ của máy chủ
- Config config.env: Tệp cấu hình giữ chi tiết chuỗi kết nối Atlas.
Thư mục ứng dụng/danh sách trên mạng là nơi mã ứng dụng React Front-end nằm. Các tệp chính ở đây là:
- App App.js/app.css,: Mã phản ứng đầu tiên để hiển thị ứng dụng và tương tác với các điểm cuối API REST Express REST.
- Chỉ số.
Thiết lập dự án
Đầu tiên, bạn sẽ cần triển khai một cụm Atlas. Bạn có thể làm theo hướng dẫn bắt đầu với Atlas để tìm hiểu cách tạo tài khoản Atlas miễn phí, tạo cụm đầu tiên của bạn và đưa chuỗi kết nối của bạn đến cơ sở dữ liệu.
Khi chúng tôi có sẵn cụm Atlas, chúng tôi có thể tải dữ liệu mẫu bằng cách nhấp vào [...]> tải dữ liệu mẫu tải. Khi dữ liệu được tải, chúng tôi đã sẵn sàng để nhân bản Chi nhánh dự án Stub:
git clone -b stub
:mongodb-developer/mongodb-express-rest-api-example.git
Hãy cùng đi đến thư mục của máy chủ trên mạng của dự án và cài đặt các gói cần thiết:
cd mongodb-express-rest-api-example/server
npm install
Bây giờ, chúng tôi đã sẵn sàng kết nối máy chủ Express của chúng tôi với cụm Atlas MongoDB.
Kết nối với MongoDB Atlas
Khi bạn định vị chuỗi kết nối của mình, hãy tạo tệp config.env trong thư mục máy chủ. Ở đó, gán một biến Atlas_uri mới Giá trị của chuỗi kết nối. Thay thế
cd mongodb-express-rest-api-example/server
npm install
5 và cd mongodb-express-rest-api-example/server
npm install
6 bằng tên người dùng và mật khẩu cơ sở dữ liệu của bạn. Sau khi hoàn thành, tệp của bạn sẽ trông tương tự như tệp dưới đây.ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
Tiếp theo, Mở Máy chủ/DB/Conn.JS và thêm việc triển khai hàm ConnectToServer từ đoạn trích bên dưới.
const { MongoClient } = require["mongodb"];
const connectionString = process.env.ATLAS_URI;
const client = new MongoClient[connectionString, {
useNewUrlParser: true,
useUnifiedTopology: true,
}];
let dbConnection;
module.exports = {
connectToServer: function [callback] {
client.connect[function [err, db] {
if [err || !db] {
return callback[err];
}
dbConnection = db.db["sample_airbnb"];
console.log["Successfully connected to MongoDB."];
return callback[];
}];
},
getDb: function [] {
return dbConnection;
},
};
Đối tượng chính Mô-đun này xuất ra là biến
cd mongodb-express-rest-api-example/server
npm install
7, sẽ giữ đối tượng cấp cơ sở dữ liệu "cd mongodb-express-rest-api-example/server
npm install
8". Thông qua đối tượng này, chúng tôi sẽ có thể truy cập bất kỳ bộ sưu tập nào trong cơ sở dữ liệu đó hoặc thay đổi bối cảnh của nó sang cơ sở dữ liệu khác. Trong hướng dẫn này, chúng tôi sẽ chỉ sử dụng một cơ sở dữ liệu có tên là ____ ____18.Thêm các tuyến đường API REST
Phần Express.js chính trong hướng dẫn này là để hiển thị các tuyến API REST để thực hiện đọc, tạo, cập nhật và xóa các hoạt động cho ứng dụng niêm yết của chúng tôi. Điều này có thể được mở rộng cho logic kinh doanh ứng dụng phức tạp hơn vì trường hợp sử dụng của bạn yêu cầu.
Tệp sẽ lưu trữ các tuyến đường là --- Máy chủ/ROUTE/ROUTER/RECORD.js. Nó sử dụng tính năng Bộ định tuyến Express:
const express = require["express"];
// recordRoutes is an instance of the express router.
// We use it to define our routes.
// The router will be added as a middleware and will take control of requests starting with path /listings.
const recordRoutes = express.Router[];
Đọc tuyến đường
Tuyến đường đọc sẽ được sử dụng khi đường dẫn
ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
0 trên phương thức GET được gọi. Nó sẽ sử dụng một bộ sưu tập.find [] để truy vấn bộ sưu tập ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
1 của chúng tôi cho 50 danh sách có sẵn đầu tiên:// This section will help you get a list of all the documents.
recordRoutes.route["/listings"].get[async function [req, res] {
const dbConnect = dbo.getDb[];
dbConnect
.collection["listingsAndReviews"]
.find[{}].limit[50]
.toArray[function [err, result] {
if [err] {
res.status[400].send["Error fetching listings!"];
} else {
res.json[result];
}
}];
}];
Mã gửi lại kết quả được đặt dưới dạng phản hồi API.
Tạo tuyến đường
Tuyến tạo sẽ ghi lại một cú vuốt của trận đấu trên một bộ sưu tập của các trận đấu. Phần thân của phương thức bài đăng này sẽ trình bày một người dùng
ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
2 và hướng đã được quét và ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
3 để tạo tài liệu của trận đấu trên mạng.// This section will help you create a new document.
recordRoutes.route["/listings/recordSwipe"].post[function [req, res] {
const dbConnect = dbo.getDb[];
const matchDocument = {
listing_id: req.body.id,
last_modified: new Date[],
session_id: req.body.session_id,
direction: req.body.direction
};
dbConnect
.collection["matches"]
.insertOne[matchDocument, function [err, result] {
if [err] {
res.status[400].send["Error inserting matches!"];
} else {
console.log[`Added a new match with id ${result.insertedId}`];
res.status[204].send[];
}
}];
}];
Việc lưu được thực hiện thông qua phương thức Collection.insertone [] với Match Match được xây dựng sẵn.
Bạn cũng có thể sử dụng chèn để chèn nhiều tài liệu cùng một lúc.
Cập nhật tuyến đường
Tuyến bản cập nhật cập nhật trường LIKE LIKES trên một đối tượng niêm yết. Điều này được thực hiện thông qua một phương thức bài viết:
// This section will help you update a document by id.
recordRoutes.route["/listings/updateLike"].post[function [req, res] {
const dbConnect = dbo.getDb[];
const listingQuery = { _id: req.body.id };
const updates = {
$inc: {
likes: 1
}
};
dbConnect
.collection["listingsAndReviews"]
.updateOne[listingQuery, updates, function [err, _result] {
if [err] {
res.status[400].send[`Error updating likes on listing with id ${listingQuery.id}!`];
} else {
console.log["1 document updated"];
}
}];
}];
Phương thức sẽ sử dụng phương thức thu gom.UpdateOne [] với $ Inc trên trường giống như trên mạng để tăng các lượt thích.
Xóa tuyến đường
Bất cứ khi nào một danh sách bị loại bỏ, chúng tôi có thể xóa nó khỏi cơ sở dữ liệu để nó không xuất hiện nữa. Điều này được thực hiện thông qua tuyến đường xóa.
// This section will help you delete a record.
recordRoutes.route["/listings/delete/:id"].delete[[req, res] => {
const dbConnect = dbo.getDb[];
const listingQuery = { listing_id: req.body.id };
dbConnect
.collection["listingsAndReviews"]
.deleteOne[listingQuery, function [err, _result] {
if [err] {
res.status[400].send[`Error deleting listing with id ${listingQuery.listing_id}!`];
} else {
console.log["1 document deleted"];
}
}];
}];
Tuyến ở đây bao gồm tham số
ATLAS_URI=mongodb+srv://:@sandbox.jadwj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
4. Đây là ID của danh sách sẽ bị xóa thông qua Collection.DeleteOne [].Bây giờ chúng tôi có mọi thứ tại chỗ, chúng tôi có thể khởi chạy máy chủ:
npm start
[nodemon] starting `node server.js`
Successfully connected to MongoDB.
Server is running on port: 5000
Thiết lập mặt trước
Ứng dụng React của chúng tôi bao gồm chủ yếu là tệp và lớp React App.js.
cd mongodb-express-rest-api-example/server
npm install
0Chúng tôi sẽ sử dụng một số mô-đun của bên thứ ba, như thẻ phản ứng, thẻ, cho phép chúng tôi tạo ra các gạch và đồ họa vuốt. Những người đó sẽ tương tác với các chức năng ứng dụng để xử lý các sự kiện như trên ONSWIPE, trên mạng HandlelikeClick, showdetails, và thành phần của thành phần, để hiển thị dữ liệu về tải trang].
Các chức năng của Onswipe, trên mạng, HandlelikeClick, thành phần và thành phần sẽ sử dụng thư viện Axios để thực hiện các yêu cầu API HTTP REST đến Máy chủ Express của chúng tôi. Những người đó, đến lượt nó, sẽ thực hiện hành động cần thiết trên cụm Atlas của chúng tôi.
Bây giờ chúng tôi có thể bắt đầu ứng dụng trong một thiết bị đầu cuối mới [quy trình máy chủ phải vẫn chạy]:
cd mongodb-express-rest-api-example/server
npm install
1Kiểm tra ứng dụng
Khi tất cả các thành phần đang hoạt động, chúng tôi có thể mở // LocalHost: 3000 URL và chúng tôi sẽ thấy ứng dụng Listinder của chúng tôi được tải:
Tương tác với các viên gạch bằng cách hoán đổi chúng sẽ gọi các tuyến đường nhanh của chúng tôi và thực hiện các hoạt động ứng dụng.
cd mongodb-express-rest-api-example/server
npm install
2Atlas Ứng dụng Dịch vụ webhooks thay thế rõ ràng
Các dịch vụ ứng dụng Atlas, Cơ sở dữ liệu di động MongoDB và các dịch vụ đám mây phát triển, cung cấp một sự thay thế mạnh mẽ và có thể mở rộng cho máy chủ Express tự lưu trữ.
Tạo một ứng dụng rất dễ dàng với một tầng miễn phí hào phóng. Trong ứng dụng đó, bạn có thể tạo các dịch vụ HTTP với các điểm cuối Webhook để thực hiện các hoạt động tương tự như các tuyến đường Express, mà không cần phải duy trì và mã hóa nhiều mã Boilerplate. Các dịch vụ này được tối ưu hóa để truy cập cụm Atlas và sẽ mở ra một thế giới mới về các cơ hội như các chức năng đám mây, nhà cung cấp Auth, GraphQL và Triggers.
Hãy để cổng một tuyến đường đến một webhook. Chúng tôi sẽ bắt đầu bằng cách tạo một dịch vụ HTTP trong UI ứng dụng Realm mới được tạo.
Tạo dịch vụ HTTP
Điều hướng đến phần Dịch vụ của bên 3D và nhấp vào loại dịch vụ HTTP.
Tạo webhook cho dịch vụ đó
Là một phần của việc xác định dịch vụ, chúng tôi cần định cấu hình phương thức HTTP mà webhook này sẽ sử dụng và logic chức năng liên quan của nó.
Mã chức năng liên quan:
cd mongodb-express-rest-api-example/server
npm install
3Bây giờ chúng ta có thể sử dụng URL Webhook trực tiếp trong ứng dụng React. Thêm phần sau vào lớp ứng dụng trong App.js:
cd mongodb-express-rest-api-example/server
npm install
4Wow, điều đó dễ dàng hơn và có thể mở rộng hơn nhiều!
Bản tóm tắt
Sử dụng Express như một phần mềm trung gian back-end là một thiết kế ngăn xếp MongoDB phổ biến. Express là nhẹ và dễ tiếp cận cho các hoạt động API của JSON và REST. MongoDB Atlas là một cơ sở dữ liệu tài liệu có thể mở rộng và linh hoạt như một dịch vụ và tạo nên một người bạn đồng hành hoàn hảo để thể hiện trong nhiều ngăn xếp như MERN, MEAD và MEVN.
Phải nói rằng, Atlas App Services và Webhooks là sự thay thế mạnh mẽ cho tầng nhanh, di chuyển nhu cầu quản lý một máy chủ Express và các phụ thuộc của nó tại chỗ.