Automation Tổng quan về API

BlackDrag0n

Internship/Fresher
Jan 4, 2021
27
1
16
3

API là gì?


1708440094278.png
Để 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.

1640575335269.png



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.

1640575350244.png

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.

1640575412933.png

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.

1640575431559.png


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ụ
GETYêu cầu dữ liệu từ ServerLấy dữ liệu từ Website
POSTCung cấp data cho ServerCung cấp thông tin đăng nhập.
PUTThay đổi dữ liệu trên ServerCập nhật NTP Server vào thiết bị
PATCHThêm dữ liệu trên ServerThêm NTP Server vào thiết bị
DELETEXoá dữ liệu trên ServerXoá NTP Server trên thiết bị

Các phương thức CRUD và ví dụ:

CRUD function
Hành động
Ví dụ
CREATThêm dữ liệu vào database hoặc ứng dụngTạo thông tin khác hàng trong database
READLấy thông tin dữ liệu trong database hoặc ứng dụngTruy vấn dữ liệu thông tin khách hàng trong database
UPDATECập nhật dữ liệu trong database hoặc ứng dụngThay đổi thông tin địa chỉ được lưu trong database
DELETEXoá dữ liệu trong database hoặc ứng dụngXoá 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
POSTCREATESử 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
GETREADLấ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
PUTUPDATEThườ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.
PATCHUPDATESử 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
DELETEDELETESử 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.
Cấu trúc của một URI sẽ bao gồm bốn thành phần con bên trong và sẽ được phân chia như ví dụ sau:
Ví dụ: một URI https://www.example.com/author/book.html#page155 sẽ được chia thành:
1640575497909.png

  • 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.
Khi thực hiện yêu cầu API đến Server và Server sẽ phản hồi về cho người dùng một status code và dữ liệu. Quá trình thực hiện yêu cầu API nếu thành công thì status code phản hồi về sẽ có giá tị là 2xx còn nều thất bài sẽ có giá trị là 4xx hoặc 5xx. Nguyên nhận thất bại thì có thể do phía người dùng ( thông tin đăng nhập sai, dữ liệu truyền đến Server không đúng yêu cầu,…) hoặc có thể do phía Server. Chúng ta có thể dựa vào Status code để kiểm tra lỗi. Một số Status code thường được sử dụng:
Status codeÝ nghĩaGiải thích
100ContinueServer nhận được yêu cầu và đang trong quá trình xử lý để gửi lại phản hồi.
200OkayPhản hồi đuọc gửi đi.
301Move PermanentlyTai 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.
302Found and Redirect (move temporarily)Tương tự như 301, nhưng URL mới chỉ là tạm thời.
304Not modifiedServer báo rằng dữ liệu được yêu cầu chưa được thay đổi.
400Bad requestCú pháp yêu cầu không hợp lệ.
401Authentication requiredYêu cầu cung cấp Username/password.
403ForbiddenServer từ chối cung cấp tài nguyên.
404Not foundTài nguyên được yêu cầu không tồn tại.
405Method not allowedUser sử dụng để yêu cầu API không có quyền truy cập đến tài nguyên.
408Request TimeoutYêu cầu gửi đến Server lâu hơn thời gian website của server cho phép.
414Request URI too largeYêu cầu URI từ phía client dài hon so với mức quy định của Server.
500Internal server errorLỗ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.
502Bad gatewayProxy hoặc gateway nhận được bad response từ server.
503Service unavailableServer 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.
504Gateway timeoutProxy hoặc gateway nhận được thời gian chờ từ phía Server.
 
Last edited:
  • Like
Reactions: thiendoduc1995

About us

  • Securityzone.vn là một trang web chuyên về an ninh mạng và công nghệ thông tin. Trang web này cung cấp các bài viết, tin tức, video, diễn đàn và các dịch vụ liên quan đến lĩnh vực này. Securityzone.vn là một trong những cộng đồng IT lớn và uy tín tại Việt Nam, thu hút nhiều người quan tâm và tham gia. Securityzone.vn cũng là nơi để các chuyên gia, nhà nghiên cứu, sinh viên và người yêu thích an ninh mạng có thể trao đổi, học hỏi và chia sẻ kiến thức, kinh nghiệm và giải pháp về các vấn đề bảo mật trong thời đại số.

Quick Navigation

User Menu