Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bài 4: REST API

    RESTful APIs và Non-RESTful APIs: Sự khác biệt không chỉ là tên gọi

    Nếu bạn đang làm việc với các thiết bị mạng đời mới như Cisco DNA Center, ACI hay NSO, thì chắc chắn bạn đã nghe đến cụm từ REST API không dưới vài lần. Nhưng REST là gì? Tại sao nó được dùng rộng rãi đến vậy? Và quan trọng hơn – RESTful API khác gì với Non-RESTful API?
    REST API là gì?


    REST – viết tắt của REpresentational State Transfer – là một chuẩn thiết kế API do Roy Fielding đề xuất từ năm 2000, và sau đó đã ảnh hưởng lớn đến sự ra đời của chuẩn HTTP/1.1. REST không phải là một giao thức, mà là một tập hợp các ràng buộc (constraints) trong cách xây dựng API để đảm bảo tính đơn giản, dễ dùng và khả năng mở rộng cao.

    Các thiết bị mạng hiện đại của Cisco như Cisco ASA, ACI, DNA Center, NSO hay các thiết bị "DNA-Ready" đều hỗ trợ hoặc sử dụng RESTful API. Với REST, việc cấu hình thiết bị, lấy thông tin trạng thái, quản lý routing, interface… đều có thể làm được thông qua các lệnh HTTP rất đơn giản.
    REST hoạt động như thế nào?


    REST API sử dụng các thao tác CRUD (Create, Read, Update, Delete) thông qua các phương thức HTTP quen thuộc như:
    • POST → Tạo mới tài nguyên
    • GET → Đọc dữ liệu tài nguyên
    • PUT → Cập nhật tài nguyên
    • DELETE → Xóa tài nguyên

    Ví dụ thực tế:
    • Gửi POST đến /interfaces → Tạo mới một interface.
    • Gửi GET đến /devices → Lấy danh sách thiết bị.
    • Gửi PUT đến /routing/ospf → Cập nhật thông số OSPF.
    • Gửi DELETE đến /interface/Gig0/1 → Xóa interface Gig0/1.

    Khi thao tác thành công, server sẽ trả về mã trạng thái như:
    • 200 OK: Thành công với thao tác GET hoặc PUT.
    • 201 Created: Thành công khi tạo mới bằng POST.
    • 204 No Content: Thành công khi xóa bằng DELETE.

    Ba ràng buộc cốt lõi của REST


    Để một API được xem là RESTful, nó phải tuân thủ 6 ràng buộc thiết kế. Trong đó, có 3 ràng buộc quan trọng nhất trong ngữ cảnh quản lý thiết bị mạng:
    1. Client-Server: Giao tiếp giữa client và server phải tách biệt. Client (ví dụ: phần mềm quản lý mạng) có thể đổi mới, cập nhật mà không ảnh hưởng đến server (thiết bị mạng).
    2. Stateless: Mỗi request phải tự đủ thông tin để server xử lý. Không có khái niệm “ghi nhớ trạng thái phiên làm việc” như Telnet hay SSH. Điều này giúp REST dễ mở rộng và dễ scale ra nhiều client.
    3. Uniform Interface: Mọi thao tác đều sử dụng cùng một chuẩn cấu trúc giao tiếp – ví dụ qua URI (Uniform Resource Identifier). Mỗi tài nguyên mạng (interface, hostname, protocol…) đều có một đường dẫn định danh riêng.

    Non-RESTful API là gì?


    Không phải API nào cũng tuân theo REST. Một Non-RESTful API là API không đáp ứng đầy đủ các ràng buộc trên. Ví dụ điển hình trong lĩnh vực mạng:
    • Một API cho phép dùng phương thức GET để thực hiện thay đổi cấu hình thiết bị – điều này vi phạm nguyên tắc REST, vì GET chỉ nên dùng để truy vấn, không thay đổi trạng thái.
    • Một số API giống như gửi lệnh CLI thông qua HTTP hoặc một API proprietary, ví dụ: gửi dòng cấu hình "interface Gig0/1\nshutdown" trực tiếp qua HTTP POST – thì đó không phải là RESTful mà là dạng API bọc CLI.

    Tại sao REST lại phổ biến?


    REST đang trở thành chuẩn giao tiếp thống trị vì:
    • Dễ hiểu, dễ dùng: Gần gũi với cách duyệt web. Bạn biết dùng trình duyệt là bạn hiểu cơ bản REST.
    • Khả năng mở rộng tốt: Stateless và client-server tách biệt giúp scale cực dễ.
    • Hỗ trợ rộng rãi: Hầu hết các công cụ DevOps, automation như Postman, Ansible, Python đều hỗ trợ làm việc với REST API.

    TÓM TẮT BÀI 4


    Khi bạn muốn tự động hóa quản lý thiết bị mạng Cisco, RESTful API là con đường tất yếu. Tuy nhiên, cần hiểu rõ ràng: không phải API nào cũng RESTful. Biết phân biệt RESTful và Non-RESTful sẽ giúp bạn sử dụng đúng công cụ, đúng chuẩn và tránh được lỗi tiềm ẩn khi automation.
    Gợi ý cho anh em VnPro:
    • Làm quen với curl hoặc Postman để test REST API với Cisco DNA Center hoặc thiết bị IOS-XE hỗ trợ RESTCONF.
    • Học cách đọc và gọi API thông qua JSON để tương tác dữ liệu.
    • Viết một script Python đơn giản sử dụng requests để gửi GET/POST/PUT/DELETE tới thiết bị.


    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X