API là gì?

API là viết tắt của Application Programming Interface (giao diện lập trình ứng dụng), đây là khái niệm để thể hiện dịch vụ cụ thể mà một khối phần mềm cung cấp. Thông qua API, các ứng dụng có thể giao tiếp với nhau để hiểu được dịch vụ mà ứng dụng khác cung cấp.

Nếu một ứng dụng sử dụng dịch vụ của ứng dụng khác, giao diện có thể được xem như một bản hợp đồng dịch vụ. Hợp đồng này sẽ xác định cách thức giao tiếp giữa hai ứng dụng thông qua các yêu cầu và phản hồi thông tin.

Alternative Text

Việc một ứng dụng gọi API của một ứng dụng khác tương tự việc bạn đến nhà hàng và gọi một chiếc Hamburger. Trong bối cảnh này có thể hiểu rằng bạn đang gọi API “một chiếc Hamburger” của nhà hàng đó. Trên thực tế, nhà hàng sẽ có rất nhiều sự lựa chọn như Pizza, gà rán,…. do đó danh sách API mà nhà hàng cung cấp cũng sẽ rất đa dạng. Cách bạn giao tiếp với nhân viên nhà hàng để gọi một chiếc Hamburger cũng sẽ tương tự cách các phần mềm giao tiếp để sử dụng dịch vụ của nhau.

API cho phép một phần mềm trừu tượng hoá các logic của nó. Điều này có nghĩa các phần mềm khác không cần biết phần mềm này logic như thế nào, mà chỉ cần sử dụng các dịch vụ mà nó cung cấp. Từ đó giúp cho việc hình dung luồng giao tiếp giữa các phần mềm một cách dễ dàng.

Ví dụ bạn sở hữu một hệ thống Website bán hàng gồm bốn phần chính: Customer, product, cart và order. Khi khách hàng mua sản phẩm, yêu cầu của khách hàng sẽ được gọi đến các API:

  • Customer để lấy tên khách hàng,
  • Product để lấy tên sản phẩm, mã sản phẩm, giá cả và chủng loại,
  • Shopping Cart sẽ đưa ra API để thống kê các mã giảm giá, thành tiền, thuế…
  • Order tạo ra các đơn hàng gồm mã đơn hàng, thời gian nhận hàng,….

Các khối phần mềm này sẽ không được phép biết các thuật toán logic bên trong các khối phần mềm khác mà chỉ cần biết tên các API mà các phần mềm đó cung cấp và các input đầu vào.

API hoạt động như thế nào?

API thường được giải thích dưới dạng máy chủ (phần mềm cung cấp dịch vụ) và máy khách (phần mềm sử dụng dịch vụ của phần mềm khác). Để hai phần mềm có thể giao tiếp được với nhau, chúng cần có chuẩn giao thức chung, đây là những quy tắc được thống nhất cho việc truyền tải ý nghĩa hoặc nội dung. 

Ví dụ: Đối với con người, việc truyền tải thông tin thông qua ngôn ngữ. Trong trường hai người sử dụng hai ngôn ngữ khác nhau sẽ dẫn đến không thể truyền tải thông tin, quá trình giao tiếp sẽ thất bại.

Vì vậy, các khối phần mềm muốn giao tiếp với nhau cần dùng chung chuẩn giao thức. Hiện nay có nhiều chuẩn giao thức khác nhau như:

SOAP (Simple Object Access Protocol)

Đây là chuẩn giao thức nhắn tin và cho phép chương trình chạy trực tiếp trên các hệ điều hành khác. Thông qua chuẩn giao thức này, máy chủ và máy khách sẽ giao tiếp với nhau bằng ngôn ngữ XML và giao thức HTTP. Đây là loại API kém linh hoạt, thường được sử dụng phổ biến trước đây.

SOAP cho phép các chương trình trong những hệ điều hành đa dạng khác nhau trong cùng một mạng có thể giao tiếp với nhau, có khả năng tận dụng những giao thức truyền tải đa dạng khác nhau gồm có SMTP, HTTP và cả những giao thức khác.

RPC (Remote Procedure Call)

Đây là một loại giao thức yêu cầu – phản hồi, sử dụng mô hình truyền tải thông tin máy khách, máy chủ. RPC cho phép chuyển sự phân tán của hệ thống cuối cùng vào một thời điểm triển khai. Lập trình viên có thể tùy biến chuyển từ lời gọi cục bộ sang lời gọi từ xa RPC mà không thay đổi quá lớn cấu trúc ban đầu của chương trình.

Websocket

Websocket là một giao thức truyền dữ liệu hai chiều giữa server-client qua một kết nối TCP duy nhất. Hơn nữa, webSocket là một giao thức được thiết kế để truyền dữ liệu bằng cách sử dụng cổng 80 và cổng 443 và nó là một phần của HTML5. Vì vậy, webSockets có thể hoạt động trên các cổng web tiêu chuẩn, nên không có rắc rối về việc mở cổng cho các ứng dụng, lo lắng về việc bị chặn bởi các tường lửa hay proxy server.

REST (Representational State Transfer)

REST là một tiêu chuẩn API sử dụng trong thiết kế ứng dụng Web, thuận tiện cho việc quản lý các tài nguyên. Nó chú trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng thái tài nguyên được định dạng và được truyền tải qua HTTP.

Việc lựa chọn giao thức cho API phụ thuộc vào nhu cầu sử dụng từ tốc độ, độ tin cậy, sự linh hoạt, ổn định,…

Ngoài ra, nếu chia theo quyền truy cập và phạm vi sử dụng, API được chia làm hai loại chính:

Public API

Public API được sử dụng bởi nhiều đối tượng bên ngoài mà gần như không có bất kỳ sự hạn chế nào.


Private API

Là các API chỉ được sử dụng bởi một số thành phần nội bộ bên trong hệ thống, do đó với loại API này tính xác thực rất cao và có giới hạn truy cập.


Ưu và nhược điểm của API

Ưu điểm

  • Các thông tin truyền tải đáng tin cậy nhờ giao tiếp hai chiều trong các giao dịch sử dụng API;
  • Với các Public API, có thể truy cập mọi lúc nhờ vào Internet;
  • Được hỗ trợ tính năng RESTful một cách đầy đủ
  • Cấu hình đơn giản, thân thiện với người dùng.

Nhược điểm

  • Có thể tốn nhiều chi phí phát triển, vần hành và sửa chữa;
  • Đòi hỏi người sử dụng phải có kiến thức chuyên sâu;
  • Có thể xảy ra rủi ro bảo mật khi bị tấn công hệ thống

Ứng dụng của API


Web API:

API giúp các hệ thống Website có thể giao tiếp với nhau, từ đó các Website có thể truy cập, kết nối hoặc cập nhật cơ sở dữ liệu. Hầu hết các Web API được thiết kế theo chuẩn RESTful.



API trên hệ điều hành

Hệ điều hành sử dụng hệ nhị phân với các dãy số 0, 1 để mã hoá thông tin. Thông thường các ứng dụng rất hiếm khi giao tiếp trực tiếp với hệ điều hành mà sẽ thông qua API. API giúp hệ điều hành hiểu được ngôn ngữ lập trình thông qua việc mã hoá các đoạn nhị phân thành các thẻ, từ đó giúp lập trình viên tạo ra ứng dụng tương tác với hệ điều hành.



API của thư viện phần mềm (framework)

API mô tả và quy định các hành động mong muốn mà các thư viện cung cấp. Một API có thể có nhiều cách triển khai khác nhau, giúp cho một chương trình viết bằng ngôn ngữ này có thể sử dụng được thư viện viết bằng ngôn ngữ khác.



Nhìn chung, API là một công cụ quan trọng cho các doanh nghiệp trong nhiều ngành khác nhau. API mang đến cho doanh nghiệp khả năng tích hợp rộng rãi, thúc đẩy sự đổi mới và tiếp cận nhiều đối tượng hơn.