MongoDB có sử dụng API REST không?

Khi bạn đến với chương này, bạn đã thiết lập một cơ sở dữ liệu MongoDB, nhưng bạn chỉ có thể tương tác với nó thông qua MongoDB shell. Trong suốt chương này, bạn sẽ xây dựng API REST để có thể tương tác với cơ sở dữ liệu của mình thông qua các lệnh gọi HTTP và thực hiện các chức năng CRUD phổ biến. tạo, đọc, cập nhật và xóa

Trong bài viết này, chúng ta sẽ tạo API MongoDB REST. Dữ liệu được lưu trữ trong cơ sở dữ liệu sẽ là tục ngữ. Các nguồn sẽ từ cuốn sách cùng tên đó cũng như các tác giả và nhà lãnh đạo tư tưởng nổi tiếng khác. Proverbs API sẽ lấy một câu tục ngữ ngẫu nhiên từ các nguồn đã chọn. Có sáu nguồn để bắt đầu và chúng tôi sẽ tạo hai tham số tùy chọn. Hai tham số sẽ là “bao gồm nguồn” và “loại trừ nguồn”. Bằng cách đó mọi người có thể lấy tục ngữ từ các nguồn yêu thích của họ

 

Trước khi tạo API, tôi đã kiểm tra xem đã có API tương tự chưa. Trong trường hợp này, có hai, một gọi là Những câu trích dẫn hay nhất và một gọi là Trích dẫn và Châm ngôn.  Both of them have a large number of sources.  I will differentiate my API by allowing full control over the sources used.

Quy trình sẽ như sau

  1. Cài đặt MongoDB trên máy chủ của bạn
  2. Điền vào MongoDB với dữ liệu của bạn
  3. Tạo logic API REST để tương tác với dữ liệu của bạn
  4. Tạo API REST bằng Bảng điều khiển nhà cung cấp RapidAPI
    1. Xác định tên API, mô tả và logo
    2. Chỉ định các điểm cuối API và các tham số khả dụng
    3. Chọn gói API và định giá
    4. Cung cấp tài liệu chi tiết hơn về API của bạn

Bước 1. Cài đặt MongoDB trên máy chủ của bạn

Để cài đặt MongoDB, bạn cần có quyền truy cập root vào máy chủ của mình. Điều đó có nghĩa là bạn sẽ có Máy chủ chuyên dụng hoặc Máy chủ riêng ảo (VPS). Nếu bạn đang sử dụng máy chủ Elastic Compute Cloud (EC2) thì có cấu hình ví dụ. Trong trường hợp của tôi, tôi có một VPS được bật quyền truy cập root. Tôi đã làm theo hướng dẫn cài đặt MongoDB RedHat. Bước đầu tiên là tạo một tệp tại /etc/yum.repos.d/mongodb-org-4.2.repo với các nội dung sau.

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

Sau đó, tôi đã cài đặt các gói MongoDB với yum install -y mongodb-org. Tiếp theo, tôi chạy nó bằng cách sử dụng service mongod start

Sau đó, khi tôi chạy nó bằng cách gõ 'mongo', tôi nhận được một thông báo chào mừng, một số thông báo thông tin và dấu nhắc lệnh

Bước 2. Điền vào MongoDB với dữ liệu của bạn

Dạng đơn giản nhất của API là dạng chỉ đọc. Điều đó có nghĩa là dữ liệu có thể được truy xuất nhưng không được thêm, cập nhật hoặc xóa. Đối với API đầu tiên của tôi trên nền tảng RapidAPI, tôi muốn giữ mọi thứ đơn giản. Đối với Proverbs API, chỉ có 2 trường trong một bộ sưu tập trong một cơ sở dữ liệu MongoDB. Một bộ sưu tập MongoDB tương tự như một bảng trong cơ sở dữ liệu SQL

Lệnh 'mongoimport' là một phần của gói mongo và nó cho phép bạn nhập tệp dữ liệu. Có ba loại tệp dữ liệu bạn có thể nhập từ dòng lệnh. Chúng là Ký hiệu đối tượng JavaScript (JSON), giá trị được phân tách bằng dấu phẩy (CSV) và giá trị được phân tách bằng tab (TSV). Tôi đã tạo ra. tsv vì có nhiều dấu phẩy trong các trích dẫn. Một ví dụ về lệnh tôi đã sử dụng như sau

mongoimport -d proverbsdb -c proverbs --type tsv --file "rumi quotes.tsv" --fields=proverb,source

Trong lệnh này, ‘proverbsdb’ là tên của cơ sở dữ liệu và ‘proverbs’ là tên của bộ sưu tập. Tên tệp dữ liệu là 'rumi trích dẫn. tsv' và hai trường trong tệp (được sử dụng trong bộ sưu tập) được chỉ định trong thẻ 'trường'

Bước 3. Tạo logic MongoDB REST API để tương tác với dữ liệu của bạn

Khi bạn điền dữ liệu của mình vào MongoDB, bạn có thể thiết lập logic để tương tác với dữ liệu của mình. Đối với API phức tạp, bạn có thể muốn sử dụng API Framework. Trong ví dụ này, tôi sẽ trả về dữ liệu từ truy vấn Mongo. Ngoài ra, nếu bạn đang sử dụng PHP như tôi trong ví dụ này, thì có Trình điều khiển PHP MongoDB mà bạn có thể cài đặt. Nhưng theo kinh nghiệm của tôi, việc sử dụng trình điều khiển tạo thêm một lớp phức tạp gây mất tập trung. Cú pháp của các lệnh là khác nhau khi sử dụng trình điều khiển. Đối với ví dụ này, tôi đã sử dụng tài liệu về Các lệnh Shell của MongoDB.

 

Đây là logic cốt lõi mà tôi đã sử dụng để tạo truy vấn cơ sở dữ liệu. Tìm tham số 'apiKeyAllowed' của riêng bạn trong cài đặt của Bảng điều khiển nhà cung cấp. Nó đảm bảo yêu cầu đến từ RapidAPI

Trước tiên, chúng tôi xác thực các tham số đầu vào được gửi trong URL

/*
File: proverbs-api.php
Description:
  This api takes 3 optional inputs, queries a local MongoDB collection using
  the inputs as filters if needed, then returns a proverb and source in JSON.
Inputs:
  includeSources - comma separated list of sources to include
  excludeSources - comma separated list of sources to exclude
  searchTerm - term used to filter results (only letters, numbers, and spaces allowed)
Outputs:
  JSON object with the following fields:
  source - source of the proverb
  proverb - text of the proverb
*/
global $debug;
$debug=false;
$apiKeyAllowed = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$sourcesAllowed = ['proverbs','shakespeare','emerson','thoreau','rumi','tao te ching'];

//Collect Inputs
$includeSrcs = (!empty($_GET['includeSources']))?explode(",",$_GET['includeSources']):[];
$excludeSrcs = (!empty($_GET['excludeSources']))?explode(",",$_GET['excludeSources']):[];

//Only keep letters, numbers, and spaces in the search term
$searchTerm = (!empty($_GET['searchTerm']))?preg_replace('/[^a-zA-Z0-9 ]/','',$_GET['searchTerm']):'';

//Validate source filters
$includeSrcFilters=$excludeSrcFilters=array();
foreach($includeSrcs as $includeSrc) {
  if (in_array(strtolower($includeSrc),$sourcesAllowed)) {
    $includeSrcFilters[] = strtolower($includeSrc);
  }
}
if (empty($includeSrcFilters)) {
  foreach($excludeSrcs as $excludeSrc) {
    if (in_array(strtolower($excludeSrc),$sourcesAllowed)) {
      $excludeSrcFilters[] = strtolower($excludeSrc);
    }
  }
}

Tiếp theo, chúng tôi sử dụng các đầu vào để xây dựng truy vấn MongoDB, thực hiện truy vấn và lặp lại kết quả ở định dạng JSON

//Make sure this is a valid request, otherwise stop
$headers = apache_request_headers();
if (empty($headers['X-Rapidapi-Proxy-Secret'])) {
  die();
} else if ($headers['X-Rapidapi-Proxy-Secret']!==$apiKeyAllowed) {
  die();
} else {
  //Now we can pull a proverb from the local database

  //Decide if we are including or excluding sources
  $ORClause = $ANDClause = $OuterANDClause = $OuterANDEND = '';

  //Create a filter for sources to include or exclude
  if (!empty($includeSrcFilters)) {
    $ORClause = '{$or: [';
    foreach ($includeSrcFilters as $includeSource) {
      $ORClause.='{source : { $regex : /'.$includeSource.'/, $options: '-i' }},';
    }
    //Trim last comma and close brackets
    $ORClause = substr($ORClause,0,-1).']}';
  } else if (!empty($excludeSrcFilters)) {
    $ANDClause = '{$and: [';
    foreach ($excludeSrcFilters as $excludeSource) {
      //The brackets in this regular expression define a group of characters.
      //  These need to be found in the source field. The ^ in front is a negation.
      //  This means we are excluding records with a source that matches $excludeSrc.
      //  The i option means it is a case insensitive match
      $ANDClause.='{source : { $regex : /[^'.$excludeSrc.']/, $options: '-i' }},';
    }
    //trim last comma and close brackets
    $ANDClause = substr($ANDClause,0,-1).']}';
  }

  //Now construct the search term clause - this will wrap around any source clause
  if (!empty($searchTerm)) {
    $OuterANDClause = '{$and: [{proverb : { $regex : /'.$searchTerm.'/, $options: '-i' }},';
    $OuterANDEND = ']}';
  }

  // Do not include the _id field in the results and return 1 random sample of all matching documents
  $sampleAggregate = '{ $project: { _id:0 } },{ $sample: { size: 1 } }';
  //Single quotes around the parts of the MongoDB command allow us to only escape the operators once.
  //  If we used double quotes we would need $sample instead (like the $match MongoDB operator below)

  //Construct the command to be executed on the server
  $mongoCmd = "mongo proverbsdb --quiet --eval "printjson(db.proverbs.aggregate([{$match: $OuterANDClause $ORClause $ANDClause $OuterANDEND}, $sampleAggregate]).toArray())"";

  //This line can be used to make sure we are sending a valid command to Mongo
  if ($debug) echo "n mongoCmd is $mongoCmdn";

  //Backtick notation executes the command as if it was typed in a console
  $proverbsJSON = `$mongoCmd`;
  echo $proverbsJSON;
}

Bước 4. Tạo API REST bằng Bảng điều khiển nhà cung cấp RapidAPI

Sau khi có dữ liệu, chúng tôi sử dụng Bảng điều khiển nhà cung cấp để tạo API trong RapidAPI

Những câu hỏi đầu tiên chúng ta cần trả lời về API mới là tên, mô tả và danh mục. Tôi đã chọn Giáo dục làm danh mục phù hợp với 2 API tương tự khác. Ngoài ra còn có một câu hỏi về cách chỉ định API, trong trường hợp của tôi, tôi sẽ chọn tùy chọn giao diện người dùng mặc định. Tôi không có logo nên tôi đã chụp ảnh một trong những trích dẫn có kích thước vuông. Một điều tôi nhận thấy là tại một số điểm trong quy trình tạo API, không rõ phải làm gì tiếp theo. Nếu còn nghi ngờ, hãy nhấp vào từng liên kết ở gần đầu trang tổng quan để đảm bảo bạn đã điền đầy đủ thông tin

MongoDB có sử dụng API REST không?
MongoDB có sử dụng API REST không?

Khi bạn truy cập trang Điểm cuối, đừng bận tâm nhập bất kỳ thứ gì vào trường biểu mẫu. Nhấp vào nút bên phải có nội dung “Tạo điểm cuối REST”

MongoDB có sử dụng API REST không?
MongoDB có sử dụng API REST không?

Chỉ định các điểm cuối API và các tham số khả dụng

Trên trang Chỉnh sửa điểm cuối, bạn thực sự chỉ định đường dẫn đến một điểm cuối cụ thể. Ngoài ra, liệt kê những thông số có sẵn. My Proverbs API có một điểm cuối nhưng nó có 3 tham số tùy chọn

MongoDB có sử dụng API REST không?
MongoDB có sử dụng API REST không?

Trên trang Chỉnh sửa điểm cuối, bạn có thể kiểm tra điểm cuối của mình. Điều này rất quan trọng trong quá trình phát triển. Tôi đã sử dụng nó để tìm lỗi trong mã JavaScript của mình được gửi tới MongoDB để truy xuất các câu tục ngữ. Phản hồi được viết vào hộp văn bản nên các dấu ngắt vẫn ở dạng HTML thay vì là các dòng mới. Ví dụ, giao diện thử nghiệm trông như thế này.

MongoDB có sử dụng API REST không?
MongoDB có sử dụng API REST không?

Trong khi người dùng kiểm tra điểm cuối của bạn sẽ thấy phản hồi JSON được hiển thị như thế này.

MongoDB có sử dụng API REST không?
MongoDB có sử dụng API REST không?

Chọn gói API và định giá

Khi bạn đã xác định điểm cuối API của mình, đã đến lúc quyết định cách kiếm tiền từ API của bạn. Trang định giá là trực quan. Nhưng nếu bạn muốn thực thi cả giới hạn hàng ngày và hàng tháng cho một gói, bạn cần tạo một đối tượng mới. Khi bạn tạo một đối tượng, bạn chỉ định các điểm cuối được liên kết và đặt cho nó một nhãn

MongoDB có sử dụng API REST không?
MongoDB có sử dụng API REST không?

 

Cung cấp tài liệu chi tiết hơn về API của bạn

Sau khi chỉ định gói giá cho API của bạn, hãy đảm bảo bạn chỉ định thông tin bổ sung trong tab “Tài liệu”. Điều này sẽ xuất hiện trong phần giới thiệu về API của bạn như sau

MongoDB có sử dụng API REST không?
MongoDB có sử dụng API REST không?

Phần kết luận

Trong bài viết này, chúng ta đã hướng dẫn cách tạo một MongoDB REST API. Bắt đầu với cấu hình máy chủ, điền dữ liệu và thêm logic để tương tác với nó. Cuối cùng, chúng ta đã hoàn thành quy trình Trang tổng quan nhà cung cấp RapidAPI để thêm API.

 

Sau khi xuất bản API của mình, bạn cũng cần xem xét cách xử lý lệnh gọi API. Đối với thử nghiệm và phát triển, đây không phải là vấn đề đáng lo ngại. Nhưng nếu bạn đang mong đợi API của mình lan truyền (hoặc nếu nó có tiềm năng đó) thì hãy đảm bảo rằng máy chủ của bạn có thể xử lý nó. Sử dụng giải pháp đám mây tự động mở rộng quy mô sẽ là lý tưởng. Nhưng nếu bạn đang sử dụng máy chủ lưu trữ chuyên dụng hoặc VPS, hãy đảm bảo rằng nó dễ dàng nâng cấp nếu cần. Chúc bạn vui vẻ khi tạo API

MongoDB có API REST không?

API dữ liệu Atlas là một API giống như REST được quản lý hoàn toàn , cho phép bạn truy cập dữ liệu MongoDB Atlas của mình và thực hiện các thao tác và tổng hợp CRUD một cách dễ dàng. Sau khi được bật trên một cụm, bạn có thể đạt được tất cả các hoạt động CRUD ngay lập tức thông qua một URL, chỉ với một khóa API.

MongoDB có phải là API không?

MongoDB cung cấp API và trình điều khiển cho hàng tá ngôn ngữ lập trình , cùng với tài liệu phong phú. API truy vấn hợp nhất của MongoDB cho phép bạn làm việc liền mạch với bất kỳ loại dữ liệu nào, như chuỗi thời gian, mảng và dữ liệu không gian địa lý.

Làm cách nào để sử dụng API dữ liệu trong MongoDB?

Tất cả những gì bạn cần là ứng dụng khách HTTPS và khóa API hợp lệ. API dữ liệu cho phép truy cập dữ liệu vào MongoDB Atlas từ nhiều môi trường mà trình điều khiển không thể thực hiện được hoặc không thực tế. .
Chọn cụm của bạn
Bật API dữ liệu
Định cấu hình xác thực API
Gửi yêu cầu đầu tiên của bạn

Làm cách nào để lưu trữ dữ liệu API trong MongoDB?

API, Mô tả. yêu cầu. thân thể. .
trước tiên hãy nhập mô-đun HTTPS để gửi yêu cầu nhận HTTPS
tạo một mảng để giữ khối đệm
Khi tất cả các khối được nhận hoàn toàn, hãy nối các khối này
lưu dữ liệu được nối trên DB