BlackDrag0n
Moderator
- Joined
- Jan 4, 2021
- Messages
- 21
- Reaction score
- 15
- Points
- 3
API là gì?
Để giao tiếp và cấu hình hệ thống mạng, các nhà phát triển phần mềm thường sử dụng cổng giao tiếp application programming interfaces (APIs). APIs được sử dụng để hai phần mềm có thể nói chuyện với nhau. Ngoài ra chúng cũng có thể sử dụng để giao tiếp với các thành phần khác trong hệ thống mạng. Nhà phát triển có thể sử dụng API để cấu hình cũng như là giám sát các thành phần trong hệ thống mạng.
API được ví như là người phục vụ, Client thực hiện các phiên gọi API sẽ như khách hàng yêu cầu món ăn đến nhà bếp( Server) thông qua người phục vụ. Khi đó API sẽ đưa các phiên gọi API đó đến Server, Server sẽ chuẩn bị dữ liệu dưỡi một định dạng như XML, JSON,… sau đó sẽ phản hồi lại cho người dùng thông qua API.
Có rất nhiều loại API khác nhau nhưng trong Network Automation tập trung chủ yếu ở hai loại API đó là Northbound API và Southbound API. Hình 2.9 mô tả cách thức hoạt động cơ bản của Northbound API và Southbound API.
Northbound APIs
Northbound APIs thường được sử dụng để giao tiếp với thiết bị Network Controller đến phần mềm quản lý và các công cụ quản lý cấu hình nhứ Ansible, Puppet, Chef,…
Northbound APIs bao gồm hai loại API đó là Synchronous API và Asynchronous API.
Synchronous APIs
Đối với Synchronous API có thể làm cho phần mềm truy vấn API phải chờ đợi phản hồi từ phía Server để xử lý dữ liệu. Vì thế có thể dẫn đến sự gián đoạn dịch vụ hoặc không thể phản hồi từ phía Server.
Asynchronous APIs
Ngược lại với Synchronous API, Asynchronous APIs không cần phải đợi Server phản hồi để thực tiện các chức năng của ứng dụng để xử lý dữ liệu nhận được. Asynchronous APIs cung cấp một cơ chế gọi lại cho phép các phản hồi của API có thể gửi lại vào một khoản thời gian khác, không cần ứng dụng phải đợi đến khi toàn bộ phiên kết nối hoàn tất.
Tóm lại, sự khác biệt giữa Synchronize API và Arsynchronize API là Synchronize API sẽ chờ để nhận dữ liệu từ phía Server phản hồi sau đó mới bắt đầu tiếp tục thực hiện các chức năng khác của chương trình. Còn đối với Arsynchronize API có khả năng cho phép thực hiện các chức năng khác của chương trình mà không cần chờ đợi quá trình gọi API hoàn tất thông qua tính năng gọi lại. Arsynchronize cung cấp cho người dùng một trải nghiệm tốt hơn, người dùng không cần phải đợi một khoản thời gian để nhận thông tin dữ liệu từ phía Server để hoàn thành việc khác.
Southbound APIs
Khi người quản trị mạng thay đổi cấu hình của một thiết bị switch hoặc router trên chương trình quản lý của controller, những thay đổi đó sẽ được đẩy xuống các thiết bị mạng phía dưới thông qua cổng Southbound API, những thiết bị nhận được cấu hình này có thể là router, switch, thậm chí là access point. APIs có thể tương tác với các thành phần trong hệ thống mạng thông qua một cổng có thể được lập trình. Southbound API có thể sửa đổi nhiều thứ hơn không gói gọn trong data plane trên thiết bị.
RESTful API
REST( Representational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến trúc để viết API. Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy. Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, .v.v. đến một URL để xử lý dữ liệu.
API sử dụng REST thường được gọi là RESTful API. Các RESTful API sử dụng các phương thức HTTP để thu nhập dữ liệu và chỉnh sửa chúng. Các phương thức HTTP sẽ có phần tương tự như các hàm trong SQL sử dụng để lưu trữ cũng như thay đổi dữ liệu. Các phương thức này thường được gọi bằng cái tên CRUD viết tắt cho các chức năng như CREATE, READ, UPDATE và DELETE.
Các phương thức HTTP và ví dụ:
HTTP Function | Hành động | Ví dụ |
GET | Yêu cầu dữ liệu từ Server | Lấy dữ liệu từ Website |
POST | Cung cấp data cho Server | Cung cấp thông tin đăng nhập. |
PUT | Thay đổi dữ liệu trên Server | Cập nhật NTP Server vào thiết bị |
PATCH | Thêm dữ liệu trên Server | Thêm NTP Server vào thiết bị |
DELETE | Xoá dữ liệu trên Server | Xoá NTP Server trên thiết bị |
Các phương thức CRUD và ví dụ:
CRUD function | Hành động | Ví dụ |
CREAT | Thêm dữ liệu vào database hoặc ứng dụng | Tạo thông tin khác hàng trong database |
READ | Lấy thông tin dữ liệu trong database hoặc ứng dụng | Truy vấn dữ liệu thông tin khách hàng trong database |
UPDATE | Cập nhật dữ liệu trong database hoặc ứng dụng | Thay đổi thông tin địa chỉ được lưu trong database |
DELETE | Xoá dữ liệu trong database hoặc ứng dụng | Xoá thông tin khách hàng trong database |
Dựa trên hai bảng so sánh trên thì chúng ta nhận thấy một số điểm chung giữa phương thức HTTP và CRUD.
Phương thức HTTP | Hoạt động | Giải thích |
POST | CREATE | Sử dụng để tạo ra một object hoặc tài nguyên mới. Ví dụ: Tạo một rule mới trên firewall |
GET | READ | Lấy thông tin tài nguyên hiện đang có trên hệ thống. Ví dụ: Lấy thông tin các Rule hiện đang có trên firewall |
PUT | UPDATE | Thường được sử dụng để thay thế hoặc update tài nguyên có sẵn trên hệ thống. có thể sử dụng để chỉnh sửa hoặc tạo mới tài nguyên. Ví dụ: Update rule đang có trên firewall. |
PATCH | UPDATE | Sử dụng để thay đổi thông số của tài nguyên Ví dụ: Chỉnh sửa các thành phần của Rule Firewall như chỉnh sửa từ cho phép thành chặn trên rule |
DELETE | DELETE | Sử dụng để xoá tài nguyên trên hệ thống. Ví dụ: Xoá một hoặc nhiều rule trên firewall. |
RESTful API requests & responses
Khi thực hiện một request API cần phải thực hiện yêu cầu đến một điểm đích là nơi chứa tài nguyên hệ thống mạng. Ví dụ như khi ping cần phải có địa chỉ IP đích hoặc domain name được hệ thống phân giải sang IP. Còn đối với APi thì địa chỉ đích sẽ được gọi là URI ( Uniform resource Identifier).
URI sẽ bao gồm hai thành phần chính:
- URL( Uniform Resource Locator) – là một tham chiếu đến tài nguyên hệ thống cụ thể. Giao thức HTTP và HTTPS thường được sử dụng trên trình duyệt web. Ngoài ra còn có một số giao thức khác như FTP, SFTP,… thường được sử dụng với URL.
- URN ( Uniform Resource Name) – dùng để xác định tài nguyên sử như trang web, hình ảnh, tài liệu mà không cần tham chiếu đến giao thức.
Ví dụ: một URI https://www.example.com/author/book.html#page155 sẽ được chia thành:
- Protocol: Giao thức được sử dụng. Có thể là HTTP, HTTPS hoặc là những giao thức khác.
- Server: Tên domain name của Server hoặc địa chỉ IP
- Resource: Tài nguyên muốn truy xuất
- Parameter: Các tham số được sử dụng để gửi thông tin liên quan đến yêu cầu API.
Status code | Ý nghĩa | Giải thích |
100 | Continue | Server nhận được yêu cầu và đang trong quá trình xử lý để gửi lại phản hồi. |
200 | Okay | Phản hồi đuọc gửi đi. |
301 | Move Permanently | Tai nguyên được yêu cầu đã bị chuyển đến một nơi khác. URL mới của resource sẽ được để trong header của phản hồi. |
302 | Found and Redirect (move temporarily) | Tương tự như 301, nhưng URL mới chỉ là tạm thời. |
304 | Not modified | Server báo rằng dữ liệu được yêu cầu chưa được thay đổi. |
400 | Bad request | Cú pháp yêu cầu không hợp lệ. |
401 | Authentication required | Yêu cầu cung cấp Username/password. |
403 | Forbidden | Server từ chối cung cấp tài nguyên. |
404 | Not found | Tài nguyên được yêu cầu không tồn tại. |
405 | Method not allowed | User sử dụng để yêu cầu API không có quyền truy cập đến tài nguyên. |
408 | Request Timeout | Yêu cầu gửi đến Server lâu hơn thời gian website của server cho phép. |
414 | Request URI too large | Yêu cầu URI từ phía client dài hon so với mức quy định của Server. |
500 | Internal server error | Lỗi từ phía Server không thể phản hồi . |
501 | Method not implemented | Phương thức yêu cầu không hợp lệ. Thường bị do lỗi chính tả như Get thay vì GET. |
502 | Bad gateway | Proxy hoặc gateway nhận được bad response từ server. |
503 | Service unavailable | Server không phản hồi có thể do quá tải hoặc đang bảo trì. Client có thể thử lại sau. |
504 | Gateway timeout | Proxy hoặc gateway nhận được thời gian chờ từ phía Server. |
Last edited: