0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng Dẫn Tạo Tài Liệu API Với Rust và Swagger

Đăng vào 3 tuần trước

• 4 phút đọc

Chủ đề:

APIrust
  • Trong thời đại công nghệ số hiện nay, các ứng dụng thường xuyên giao tiếp với nhau thông qua các giao diện lập trình ứng dụng (API). Tuy nhiên, ngay cả những API tốt nhất cũng chỉ thực sự phát huy hiệu quả khi có tài liệu hướng dẫn rõ ràng và dễ hiểu. Đây là lý do APIDocs ra đời nhằm tạo điều kiện thuận lợi cho các nhà phát triển trong việc tiếp cận và sử dụng tài liệu.

APIDocs Là Gì?

  • Tài liệu API (APIDocs) giống như một hướng dẫn sử dụng cho API của bạn. Tài liệu này không chỉ cung cấp hướng dẫn về cách sử dụng và tích hợp API mà còn đảm bảo rằng các nhà phát triển có đầy đủ thông tin cần thiết để tương tác với API một cách hiệu quả.

Tại Sao Cần APIDocs?

  • Hãy tưởng tượng bạn đang cố gắng lắp ráp một món đồ nội thất phức tạp mà không có bất kỳ hướng dẫn nào. Nó sẽ rất khó khăn và khó chịu. Lập trình cũng tương tự; nếu không có tài liệu API thích hợp, các nhà phát triển có thể gặp khó khăn trong việc hiểu cách hoạt động của API, các tham số đầu vào và đầu ra.

Điểm Mạnh và Yếu Của APIDocs

Điểm Mạnh

  • Hiểu Biết Rõ Ràng: Tài liệu API được viết tốt giúp cung cấp một nguồn kiến thức duy nhất về cách API hoạt động, giúp các nhà phát triển dễ dàng nắm bắt các điểm cuối.
  • Tích Hợp Nhanh Hơn: Tài liệu giúp tiết kiệm thời gian và công sức cho các nhà phát triển trong quá trình tích hợp, vì họ không cần phải tìm hiểu mã hoặc đưa ra các giả định.
  • Giảm Lỗi: Tài liệu rõ ràng và chính xác giúp ngăn ngừa lỗi trong quá trình tích hợp thông qua việc cung cấp thông tin đầy đủ về định dạng, tham số và phản hồi yêu cầu.
  • Thông Tin Nhất Quán: Tài liệu API đóng vai trò như một ngôn ngữ chung giữa các nhóm phát triển frontend, backend và API, cải thiện sự giao tiếp và hợp tác.

Điểm Yếu

  • Cần Cập Nhật Liên Tục: Tài liệu cần được cập nhật ngay khi có bất kỳ sự thay đổi nào đối với API, điều này có thể gây bất tiện cho những người mới bắt đầu sử dụng APIDocs.
  • Khó Khăn Trong Tích Hợp: Việc tích hợp APIDocs có thể tốn thời gian khi bạn chưa quen với cách sử dụng.

Công Cụ Tạo Tài Liệu API

  • Swagger (OpenAPI): Một bộ công cụ nổi tiếng giúp thiết kế, viết tài liệu và thử nghiệm API.
  • Postman: Một nền tảng để xây dựng, thử nghiệm và ghi lại API.

Cài Đặt Swagger Trong Rust

Để cài đặt Swagger, bạn cần thêm các thư viện sau vào tệp Cargo.toml:

Copy
swagger = "6.5.0"
utoipa = {version = "4.2.3",features = ["axum_extras"]}
utoipa-swagger-ui = {version = "7.1.0",features = ["axum"]}

LƯU Ý: Tôi đang sử dụng Axum cho web service, bạn cũng có thể sử dụng các thư viện khác như actix-web, warp, tide, hoặc rocket.

Tạo Tài Liệu API Với Swagger

  1. Tạo một tệp có tên swagger.rs và sử dụng mã sau:
rust Copy
#[derive(OpenApi)]
#[openapi(
    paths(
        // Bao gồm các hàm route của bạn tại đây, với các tags tương ứng
        crate::routes::users::get_user_id,
        crate::routes::products::create_product,
    ),
    components(
        schemas(User, Product, ObjectId) // Liệt kê các mô hình dữ liệu của bạn
    ),
    tags(
        (name = "users", description = "Các điểm cuối quản lý người dùng"),
        (name = "products", description = "Các điểm cuối quản lý sản phẩm")
    )
)]
pub struct ApiDoc;
  1. Trong tệp user_controller.rs, thêm mã sau để định nghĩa các điểm cuối:
rust Copy
#[utoipa::path(
    post,
    path="/v1/api/create_user",
    request_body = CreateUserRequest,
    tag = "user",
    responses(
        (status = 200, description="Tạo người dùng thành công", body= User),
        (status = 500, description="Có lỗi trong quá trình cập nhật người dùng", body=APIError),
        (status = 404, description="Email đã tồn tại trong cơ sở dữ liệu", body=APIError)
    ),
)]
pub async fn create_user

LƯU Ý: Đảm bảo rằng path phải giống với endpoint bạn đã cài đặt trong các route để tránh bị lỗi.

  1. Trong tệp route_user.rs, định nghĩa router cho người dùng:
rust Copy
pub fn user_router() -> Router {
    Router::new()
        .route("/v1/api/create_user", post(create_user))
}
  1. Cuối cùng, trong tệp main.rs, khởi tạo máy chủ Axum:
rust Copy
#[tokio::main]
async fn main() {
    // ... kết nối đến cơ sở dữ liệu và thiết lập khác

    // Khởi tạo router API
    let app = Router::new()
        .merge(create_router(db)) 
        .merge(SwaggerUi::new("/swagger/api-docs").url("/api-docs/openapi.json", ApiDoc::openapi()));
    // ... chạy máy chủ Axum
}

Xem Tài Liệu API

Truy cập vào tài liệu API tại đường dẫn: http://localhost:3000/swagger/api-docs.

Bằng cách làm theo các bước trên, bạn có thể dễ dàng tạo tài liệu API với Swagger trong Rust. Hãy nhớ rằng, các kiểu dữ liệu trong Swagger thường là các kiểu nguyên thủy như string, number, boolean, array, và object. Nếu bạn sử dụng các kiểu dữ liệu phức tạp hơn như ObjectID trong MongoDB, hãy lưu ý rằng Swagger sẽ tự động chuyển đổi sang string mà không làm ảnh hưởng đến hoạt động của code.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào