API REST đã trở thành De Facto để kết nối và truyền dữ liệu từ nguồn này sang nguồn khác. Nó cung cấp một tập hợp các nguyên tắc và mẫu kiến trúc để thiết kế và phát triển các dịch vụ web
Bài đăng này sẽ thảo luận về việc xây dựng ứng dụng quản lý người dùng với Rust sử dụng Rocket framework và MongoDB. Ở phần cuối của hướng dẫn này, chúng ta sẽ tìm hiểu cách cấu trúc ứng dụng Rust, xây dựng API REST và duy trì dữ liệu của chúng ta bằng MongoDB
Rocket là một khung web HTTP được viết bằng Rust với các ưu tiên về bảo mật, tính linh hoạt và tốc độ. Tên lửa cung cấp các tính năng như an toàn loại, khả năng sử dụng lại, ghi nhật ký, phân phối tệp tĩnh và nhiều tính năng khác mà các nhà phát triển có thể tận dụng để xây dựng các ứng dụng có thể mở rộng với ít mã hơn
MongoDB là một chương trình quản lý cơ sở dữ liệu dựa trên tài liệu được sử dụng thay thế cho cơ sở dữ liệu quan hệ. MongoDB hỗ trợ làm việc với các tập dữ liệu phân tán lớn với các tùy chọn để lưu trữ hoặc truy xuất thông tin một cách liền mạch
Mã nguồn hoàn chỉnh có sẵn trong kho lưu trữ này
điều kiện tiên quyết
Để nắm bắt đầy đủ các khái niệm được trình bày trong hướng dẫn này, cần có kinh nghiệm với Rust. Kinh nghiệm với MongoDB không phải là một yêu cầu, nhưng thật tuyệt khi có
Chúng tôi cũng sẽ cần những điều sau đây
- Tài khoản MongoDB để lưu trữ cơ sở dữ liệu. Đăng ký hoàn toàn miễn phí
- Người đưa thư hoặc bất kỳ ứng dụng thử nghiệm API nào
Hãy viết mã
Bắt đầu
Để bắt đầu, chúng ta cần điều hướng đến thư mục mong muốn và chạy lệnh bên dưới trong thiết bị đầu cuối của mình
cargo new rocket-mongo-api && cd rocket-mongo-api
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Lệnh này tạo một dự án Rust có tên là
cargo build
7 và điều hướng vào thư mục dự án
Tiếp theo chúng ta tiến hành cài đặt các phụ thuộc cần thiết bằng cách sửa đổi phần
cargo build
8 của file
cargo build
9 như hình bên dưới
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
0 là một khung dựa trên Rust để xây dựng các ứng dụng web. Nó cũng chỉ định phiên bản được yêu cầu và loại tính năng (json)
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
1 là một khung để tuần tự hóa và giải tuần tự hóa cấu trúc dữ liệu Rust. e. g. chuyển đổi cấu trúc Rust thành JSON
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
2 là một thư viện để quản lý các biến môi trường
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
3 là trình điều khiển để kết nối với MongoDB. Nó cũng chỉ định phiên bản được yêu cầu và loại tính năng (API đồng bộ hóa)
Chúng ta cần chạy lệnh bên dưới để cài đặt các phụ thuộc
cargo build
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Điểm đầu vào ứng dụng
Với các phụ thuộc dự án đã được cài đặt, hãy sửa đổi tệp
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
4 trong thư mục
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
5 thành như sau
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Nhập các phụ thuộc cần thiết
- Tạo trình xử lý
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
6 sử dụng macro Rust để chỉ định phương thức HTTP, đường dẫn tuyến đường
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
7 và trả về JSON của
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
8
- Sử dụng macro
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
9 để chạy hàm
cargo build
70 không đồng bộ và khởi động máy chủ. Hàm
cargo build
70 tạo một máy chủ mới bằng cách sử dụng hàm
cargo build
72 và gắn trình xử lý
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
6 vào một tuyến đường
Tiếp theo, chúng tôi có thể kiểm tra ứng dụng của bạn bằng cách chạy lệnh bên dưới trong thiết bị đầu cuối của bạn
cargo build
7
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Rocket chạy máy chủ phát triển trên
cargo build
74 hoặc
cargo build
75
Hệ thống mô-đun trong Rust
Mô-đun trong Rust là cơ chế chia mã thành các thành phần có thể tái sử dụng và quản lý khả năng hiển thị giữa chúng. Các mô-đun giúp chúng tôi duy trì cấu trúc dự án tốt cho dự án của chúng tôi
Để làm điều này, chúng ta cần điều hướng đến thư mục
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
5 và tạo thư mục
cargo build
77,
cargo build
78 và
cargo build
79 với tệp
cargo build
80 tương ứng để quản lý khả năng hiển thị
cargo build
77 dành cho việc mô đun hóa trình xử lý API
cargo build
78 là để mô đun hóa logic dữ liệu
cargo build
79 là để mô đun hóa logic cơ sở dữ liệu
Thêm tham chiếu vào các Mô-đun
Để sử dụng mã trong các mô-đun, chúng ta cần khai báo chúng dưới dạng một mô-đun và nhập chúng vào tệp
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
4.
cargo build
8
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Thiết lập MongoDB
Khi đã xong, chúng ta cần đăng nhập hoặc đăng ký vào tài khoản MongoDB của mình. Nhấp vào menu thả xuống dự án và nhấp vào nút Dự án mới
Nhập
cargo build
85 làm tên dự án, nhấp vào Tiếp theo và nhấp vào Tạo dự án
Nhấp vào Xây dựng cơ sở dữ liệu
Chọn Chia sẻ làm loại cơ sở dữ liệu
Nhấp vào Tạo để thiết lập một cụm. Điều này đôi khi có thể mất thời gian để thiết lập
Tiếp theo, chúng ta cần tạo một người dùng để truy cập cơ sở dữ liệu bên ngoài bằng cách nhập Tên người dùng, Mật khẩu rồi nhấp vào Tạo người dùng. Chúng tôi cũng cần thêm địa chỉ IP của mình để kết nối an toàn với cơ sở dữ liệu bằng cách nhấp vào nút Thêm địa chỉ IP hiện tại của tôi. Sau đó bấm vào Kết thúc và Đóng để lưu thay đổi
Khi lưu các thay đổi, chúng ta sẽ thấy màn hình Triển khai cơ sở dữ liệu, như hình bên dưới
Kết nối ứng dụng của chúng tôi với MongoDB
Sau khi cấu hình xong, chúng ta cần kết nối ứng dụng của mình với cơ sở dữ liệu đã tạo. Để thực hiện việc này, hãy nhấp vào nút Kết nối
Click vào Connect your application, đổi Driver thành
cargo build
86 và Version như hình bên dưới. Sau đó bấm vào biểu tượng sao chép để sao chép chuỗi kết nối
Biến môi trường thiết lập
Tiếp theo, chúng ta phải sửa đổi chuỗi kết nối đã sao chép bằng mật khẩu của người dùng mà chúng ta đã tạo trước đó và thay đổi tên cơ sở dữ liệu. Để làm được điều này, trước tiên, chúng ta cần tạo một tệp
cargo build
87 trong thư mục gốc và trong tệp này, hãy thêm đoạn mã đã sao chép.
cargo build
7
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Mẫu của chuỗi kết nối được điền đúng bên dưới
cargo build
8
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Tạo API REST
Sau khi thiết lập xong, chúng ta cần tạo một mô hình để biểu diễn dữ liệu ứng dụng của mình. Để làm điều này, chúng ta cần điều hướng đến thư mục
cargo build
78 và trong thư mục này, hãy tạo tệp
cargo build
89 và thêm đoạn mã bên dưới
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
1
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Nhập các phụ thuộc cần thiết
- Sử dụng macro
cargo build
70 để tạo hỗ trợ triển khai để định dạng đầu ra, tuần tự hóa và giải tuần tự hóa cấu trúc dữ liệu
- Tạo cấu trúc
cargo build
71 với các thuộc tính bắt buộc. Chúng tôi cũng đã thêm thuộc tính trường vào thuộc tính
cargo build
72 để đổi tên và bỏ qua trường nếu trường trống
Tái bút. Công cụ sửa đổi
cargo build
73 làm cho cấu trúc và thuộc tính của nó trở nên công khai và có thể được truy cập từ các tệp/mô-đun khác
Tiếp theo, chúng ta phải đăng ký tệp
cargo build
89 như một phần của mô-đun
cargo build
78. Để thực hiện việc này, hãy mở
cargo build
80 trong thư mục
cargo build
78 và thêm đoạn mã bên dưới
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
0
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Tạo điểm cuối người dùng
Với mô hình được thiết lập đầy đủ và có sẵn để sử dụng, giờ đây chúng tôi có thể tạo logic cơ sở dữ liệu của mình để tạo người dùng. Để làm điều này, Đầu tiên, chúng ta cần điều hướng đến thư mục
cargo build
79 và trong thư mục này, hãy tạo một tệp
cargo build
79 và thêm đoạn mã bên dưới.
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
0
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
Tái bút.
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
12 được chỉ định khi tạo tài liệu mới yêu cầu MongoDB tự động tạo id của người dùng
Tiếp theo, chúng ta phải đăng ký tệp
cargo build
79 như một phần của mô-đun
cargo build
79. Để thực hiện việc này, hãy mở
cargo build
80 trong thư mục
cargo build
79 và thêm đoạn mã bên dưới
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
1
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Thứ hai, chúng ta cần tạo một trình xử lý sử dụng phương thức
cargo build
85 từ
cargo build
79 để tạo người dùng. Để làm điều này, chúng ta cần điều hướng đến thư mục
cargo build
77 và trong thư mục này, hãy tạo tệp
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
00 và thêm đoạn mã bên dưới
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
2
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Nhập các phụ thuộc cần thiết
- Sử dụng macro định tuyến để chỉ định phương thức HTTP, định tuyến và chỉ ra rằng trình xử lý mong đợi dữ liệu nội dung
- Tạo một trình xử lý
cargo build
85 lấy
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
02, một loại cho
cargo build
80 và một
cargo build
87 làm tham số. Bên trong trình xử lý, chúng tôi đã tạo một biến
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
05 để tạo người dùng, chèn nó vào cơ sở dữ liệu bằng phương thức
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
06 và trả về phản hồi chính xác nếu việc chèn thành công hoặc lỗi nếu có
Tái bút. Cấu trúc
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
07 và
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
08 được sử dụng để xác định tham số là để quản lý trạng thái ứng dụng được chia sẻ trên các tuyến và trích xuất dữ liệu JSON từ tải trọng yêu cầu, tương ứng
Cuối cùng, chúng tôi cần sửa đổi điểm nhập ứng dụng của bạn để bao gồm trình xử lý ________ 385. Để làm điều này, chúng ta cần điều hướng đến tệp
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
4 và sửa đổi nó như hình bên dưới
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
3
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Nhập các phụ thuộc cần thiết
- Tạo biến
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
02 để thiết lập kết nối với MongoDB bằng cách gọi phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
02 và thêm nó vào hàm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
03 để cung cấp trạng thái cơ sở dữ liệu trên phạm vi ứng dụng
- Sử dụng hàm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
04 và
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
05 để thêm dữ liệu ứng dụng và trình xử lý vào phiên bản
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
06
Lấy điểm cuối của người dùng
Để lấy thông tin chi tiết về người dùng, trước tiên chúng tôi phải sửa đổi tệp
cargo build
79 bằng cách thêm phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
08 vào khối triển khai.
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
4
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Sửa đổi các phụ thuộc để bao gồm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
09 và
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
10
- Thêm một phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
08 lấy một
cargo build
86 và
cargo build
72 làm tham số và trả về chi tiết người dùng hoặc một lỗi. Trong phương thức này, chúng tôi đã chuyển đổi
cargo build
72 thành
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
15 và sử dụng nó làm bộ lọc để lấy tài liệu phù hợp. Sau đó, chúng tôi sử dụng
cargo build
86 tham chiếu cấu trúc
cargo build
80 để truy cập hàm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
18 từ bộ sưu tập để lấy thông tin chi tiết về người dùng và xử lý lỗi. Cuối cùng, chúng tôi đã trả lại thông tin người dùng đã tạo
Thứ hai, chúng ta cần sửa đổi
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
00 bằng cách tạo một trình xử lý sử dụng phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
08 từ
cargo build
79 để có được một người dùng
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
5
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Sử dụng macro định tuyến để chỉ định phương thức HTTP, tuyến tương ứng và tham số tuyến
- Tạo một trình xử lý
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
08 nhận vào
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
02, một loại cho
cargo build
80 và một
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
25 để truy cập đường dẫn tuyến đường dưới dạng tham số. Bên trong handler, chúng ta đã tạo một biến
cargo build
72 để lấy id của người dùng, lấy thông tin chi tiết của người dùng từ cơ sở dữ liệu bằng phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
27. Chúng tôi đã trả lại phản hồi chính xác nếu yêu cầu thành công hoặc lỗi nếu có
Cuối cùng, chúng tôi cần sửa đổi điểm nhập ứng dụng của mình (
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
4) để bao gồm trình xử lý
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
08 bằng cách nhập trình xử lý và thêm một dịch vụ mới cho nó
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
6
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Chỉnh sửa điểm cuối của người dùng
Để chỉnh sửa người dùng, trước tiên chúng tôi phải sửa đổi tệp
cargo build
79 bằng cách thêm phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
31 vào khối triển khai.
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
7
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Sửa đổi các phụ thuộc để bao gồm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
32
- Thêm phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
33 nhận tham số
cargo build
86,
cargo build
72 và
cargo build
87 và trả về chi tiết người dùng được cập nhật hoặc lỗi. Bên trong phương thức này, chúng tôi đã chuyển đổi
cargo build
72 thành
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
15, tạo biến
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
39 để lấy tài liệu phù hợp mà chúng tôi muốn cập nhật và sử dụng macro
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
10 để cập nhật các trường tài liệu. Sau đó, chúng tôi sử dụng
cargo build
86 tham chiếu cấu trúc
cargo build
80 để truy cập hàm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
43 từ bộ sưu tập để cập nhật người dùng phù hợp với
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
39 đã chỉ định và xử lý lỗi. Cuối cùng, chúng tôi đã trả lại thông tin người dùng đã cập nhật
Thứ hai, chúng ta cần sửa đổi
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
00 bằng cách tạo một trình xử lý sử dụng phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
33 từ
cargo build
79 để cập nhật người dùng
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
8
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Sửa đổi các phụ thuộc để bao gồm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
15
- Sử dụng macro định tuyến để chỉ định phương thức HTTP, tuyến tương ứng, tham số tuyến và dữ liệu nội dung
- Tạo một trình xử lý
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
33 nhận vào
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
02, một loại cho
cargo build
80,
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
25 và
cargo build
87 làm tham số. Bên trong trình xử lý, chúng tôi đã tạo một biến
cargo build
72 để lấy id của người dùng, cập nhật thông tin chi tiết của người dùng từ cơ sở dữ liệu bằng cách sử dụng phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
55 bằng cách chuyển thông tin của người dùng đã cập nhật. Cuối cùng chúng ta kiểm tra update thành công chưa và trả về user đã cập nhật hoặc báo lỗi nếu có
Cuối cùng, chúng tôi cần sửa đổi điểm nhập ứng dụng của mình (
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
4) để bao gồm trình xử lý
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
33 bằng cách nhập trình xử lý và thêm một dịch vụ mới cho nó
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
9
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Xóa điểm cuối người dùng
Để xóa người dùng, trước tiên chúng tôi phải sửa đổi tệp
cargo build
79 bằng cách thêm phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
59 vào khối triển khai.
cargo build
0
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Sửa đổi các phụ thuộc để bao gồm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
60
- Thêm một phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
59 lấy một
cargo build
86 và
cargo build
72 làm tham số và trả về chi tiết người dùng đã xóa hoặc một lỗi. Bên trong phương thức, chúng tôi đã chuyển đổi
cargo build
72 thành
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
15 và tạo một biến
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
39 để lấy tài liệu phù hợp mà chúng tôi muốn xóa. Sau đó, chúng tôi sử dụng
cargo build
86 tham chiếu cấu trúc
cargo build
80 để truy cập hàm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
69 từ bộ sưu tập để xóa người dùng khớp với
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
39 đã chỉ định và xử lý lỗi. Finally, we returned the deleted user information
Thứ hai, chúng ta cần sửa đổi
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
00 bằng cách tạo một trình xử lý sử dụng phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
59 từ
cargo build
79 để xóa người dùng
cargo build
1
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Sử dụng macro định tuyến để chỉ định phương thức HTTP, tuyến tương ứng và tham số tuyến
- Tạo một trình xử lý
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
59 nhận vào
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
02, một loại cho
cargo build
80 và
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
25 làm tham số. Bên trong trình xử lý, chúng tôi đã tạo một biến
cargo build
72 để lấy id của người dùng và xóa người dùng khỏi cơ sở dữ liệu bằng phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
79 bằng cách chuyển vào
cargo build
72. Cuối cùng, chúng tôi đã trả lại phản hồi thích hợp hoặc lỗi nếu có
Cuối cùng, chúng tôi cần sửa đổi điểm nhập ứng dụng của mình (
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
4) để bao gồm trình xử lý
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
59 bằng cách nhập trình xử lý và thêm một dịch vụ mới cho nó
cargo build
2
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Lấy tất cả điểm cuối của người dùng
Để lấy danh sách người dùng, trước tiên chúng tôi phải sửa đổi tệp
cargo build
79 bằng cách thêm phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
84 vào khối triển khai.
cargo build
3
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thêm phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
84 lấy tham số
cargo build
86 làm tham số và trả về danh sách người dùng hoặc lỗi. Bên trong phương thức, chúng tôi sử dụng
cargo build
86 tham chiếu cấu trúc
cargo build
80 để truy cập hàm
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
89 từ bộ sưu tập mà không có bất kỳ bộ lọc nào để nó có thể khớp với tất cả các tài liệu bên trong cơ sở dữ liệu và xử lý lỗi. Cuối cùng, chúng tôi đã trả lại danh sách người dùng
Thứ hai, chúng ta cần sửa đổi
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
00 bằng cách tạo một trình xử lý sử dụng phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
84 từ
cargo build
79 để lấy danh sách người dùng
cargo build
4
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Đoạn mã trên thực hiện như sau
- Sử dụng macro định tuyến để chỉ định phương thức HTTP và tuyến đường tương ứng
- Tạo trình xử lý
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
84 sử dụng phương thức
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
79 để lấy danh sách người dùng. Sau đó, chúng tôi trả lại danh sách người dùng hoặc lỗi nếu có
Cuối cùng, chúng tôi cần sửa đổi điểm nhập ứng dụng của mình (
#[macro_use] extern crate rocket; use rocket::{get, http::Status, serde::json::Json}; #[get("/")] fn hello() -> Result<Json<String>, Status> { Ok(Json(String::from("Hello from rust and mongoDB"))) } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![hello]) }
4) để bao gồm trình xử lý
//other code section goes here [dependencies] rocket = {version = "0.5.0-rc.2", features = ["json"]} serde = "1.0.136" dotenv = "0.15.0" [dependencies.mongodb] version = "2.2.0" default-features = false features = ["sync"]
84 bằng cách nhập trình xử lý và thêm một dịch vụ mới cho nó
cargo build
5
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Khi đã xong, chúng tôi có thể kiểm tra ứng dụng của mình bằng cách chạy lệnh bên dưới trong thiết bị đầu cuối của chúng tôi
cargo build
7
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Sự kết luận
Bài đăng này đã thảo luận về cách mô đun hóa ứng dụng Rust, xây dựng API REST và duy trì dữ liệu của chúng tôi bằng MongoDB
MongoDB có API không?
MongoDB Atlas API cho phép bạn truy cập dữ liệu đám mây của mình theo chương trình chỉ với một vài cấu hình. Với API dữ liệu Atlas mới, bạn có thể dễ dàng xây dựng các vi dịch vụ tập trung vào dữ liệu hoặc tích hợp với các dịch vụ của bên thứ ba—các tác vụ trước đây được coi là tẻ nhạt
Làm cách nào để viết API cho MongoDB?
Bước 1. Thiết lập dự án
Bước 2. Cài đặt phụ thuộc ứng dụng
Bước 3. Mã vận hành
Bước 4. Ứng dụng thử nghiệm cho MongoDB REST API
Bước 5. Thiết lập kết nối với MongoDB REST API
Bước 6. Xây dựng điểm cuối API MongoDB REST
Bước 7. Kiểm tra API MongoDB REST
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 hình. .
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