API thường xuất hiện trong lĩnh vực khoa học máy tính. Bạn đã hiểu đúng định nghĩa API, phân loại API và các hoạt động ra sao chưa? Nếu chưa thì bạn có thể thông qua bài viết dưới đây để khám xem API là gì. Đầu tiên, chúng ta cùng tìm hiểu về khái niệm API là gì trước nhé!
API là gì?

API viết tắt của Application Programming Interface là một tập hợp các câu lệnh (commands), functions, các giao thức (protocols), objects,... giúp hai phần mềm (ứng dụng) có thể tương tác và trao đổi dữ liệu qua lại được với nhau. Hiện API vẫn bị hiểu sai là URLs giúp website frond-end gọi sang back-end để lấy dữ liệu.
Bạn hãy tưởng tượng chúng ta đang lái xe, API sẽ là các thành phần điều khiển trên xe của bạn chẳng hạn như vô lăng, bảng điều khiển, đèn xe, gương,... Chúng ta chỉ cần biết điều khiển nó và lái xe giữ an toàn là được chứ không cần bận tâm chúng được cấu tạo và hoạt động như thế nào.
Chúng ta cùng liên tưởng đến một khái niệm khác có phần đuôi Interface giống với API đó chính là UI hay còn biết đến là User Interface. Thông qua 2 đặc điểm dưới đây bạn sẽ hiểu rõ hơn về định nghĩa API là gì!
- UI giúp user người dùng cuối tương tác với ứng dụng (application) trong khi đó, API sẽ giúp hai application tương tác với nhau, chúng ta sẽ quy ước chúng thành application A và Application B.
- UI sẽ giúp user tương tác application mà lúc này user không cần quan tâm application được xây dựng hay thực hiện như thế nào. Chẳng hạn như các bạn đóng vai trò là một end user, các bạn truy cập vào Google, nhập một đoạn text và nhấp enter thì lúc này nó sẽ hiển thị ra những kết quả tìm kiếm. Bạn không cần bận tâm về lý do tại sao nó lại hiển thị ra được kết quả nhanh như vậy. Tương tự vậy, API application A tương tác với application B, lúc này application B không cần quan tâm application A được thực hiện như thế nào. Application B chỉ cần thông qua những chỉ dẫn từ application A để trao đổi dữ liệu qua lại mà thôi.
Bạn cũng có thể xem qua hình minh hoạ dưới đây để hiểu rõ hơn về cách hoạt động của API.

Ví dụ về API
Có hai ứng dụng JavaScript tương tác với nhau:
- Bạn A sẽ xây dựng hàm tính tổng
- Bạn B sẽ sử dụng hàm tính tổng của bạn A trong cùng một JavaScript. Bạn A cung cấp API tính tổng cho bạn B.
Trong quá trình sử dụng thì B không cần quan tâm hàm tính tổng của A được viết như thế nào, B chỉ cần quan tâm nhiệm vụ chính của mình là gọi hàm, lấy hàm và truyền hai thông số.
Kiến trúc API

Kiến trúc API bao gồm quy tắc hướng dẫn thông tin giúp API có thể chia sẻ với khách hàng và cách API chia sẻ dữ liệu. REST, SOAP và RPC là những kiến trúc API phổ biến nhất được sử dụng ngày nay.
REST

Ngày nay, phần lớn các web API được xây dựng dựa trên REST. REST viết tắt của Representational State Transfer. Nó là một dạng chuyển đổi cấu trúc dữ liệu, sử dụng HTTP đơn giản để tạo giao tiếp giữa các máy. REST API hoặc RESTful API là API tuân theo các nguyên tắc REST để truyền dữ liệu từ server sang requesting client.
Các ràng buộc trong REST:
- Client-Server Separation
Tất cả các tương tác client-server phải ở dạng request từ client, theo sau là response từ server. Servers không thể request và clients không thể respond.
- Uniform Interface (Chuẩn hoá các Interface)
Đây được xem là ràng buộc quan trọng nhất của hệ thống REST. Tất cả các requests và responses phải sử dụng HTTP làm giao thức liên lạc và được định dạng theo một cách cụ thể để đảm bảo khả năng tương thích giữa client và server. Responses từ server được định dạng bằng JavaScript Object Notation (JSON).
- Stateless (phi trạng thái)
Server và client sẽ không lưu trạng thái của nhau. Server không lưu trữ dữ liệu từ client requests và chúng sẽ không ghi nhớ gì từ các tương tác trong quá khứ. Điều này giúp hệ thống dễ phát triển và mở rộng hơn.
- Layered system (hệ thống phân lớp)
Requests và responses phải luôn được định dạng theo cùng một cách ngay cả khi chúng được chuyển qua các servers trung gian giữa client và API.
- Cacheable
Responses của server phải cho biết liệu tài nguyên cung cấp có được lưu vào bộ nhớ cache bởi client hay không và được lưu trong bao lâu.
Thông qua các ràng buộc trên, REST API có thể được sử dụng để truyền dữ liệu nhanh chóng, dễ dàng, an toàn và giúp chúng trở thành lựa chọn phổ biến của các developer.
SOAP

SOAP (Simple Object Access Protocol) là giao thức truy cập đối tượng đơn giản được sử dụng để xây dựng API. SOAP do World Wide Web Consortium (W3C) định nghĩa và sử dụng XML để mã hóa thông tin.
SOAP được sử dụng để gửi thông điệp giữa các ứng dụng với nhau thông qua HTTP. SOAP thường được triển khai để truyền data nội bộ có yêu cầu bảo mật cao. Một lợi thế nữa của SOAP là nó hoạt động trên mọi giao thức truyền thông (communication protocol) không chỉ trên HTTP như trường hợp của REST.
RPC

RPC (Remote Procedural Call) được xem là giao thức đơn giản nhất so với REST, SOAP. Không giống như REST và SOAP tạo điều kiện cho việc truyền dữ liệu, RPC APIs sẽ invoke processes. Nói cách khác, chúng sẽ thực thi các scripts trên server.
RPC APIs có thể sử dụng JSON (giao thức JSON-RPC) hoặc XML (giao thức XML-RPC) trong các lệnh gọi của chúng. XML sẽ an toàn và phù hợp hơn so với JSON, nhưng hai giao thức này tương tự nhau.
RPC APIs bị hạn chế về khả năng bảo mật, vì vậy bạn sẽ không thấy chúng được ứng dụng thường xuyên như REST API hoặc SOAP trên web. Tuy nhiên, nó thường được sử dụng trong các hệ thống nội bộ để thực hiện các quy trình cơ bản đặc biệt là khi có nhiều yêu cầu cùng một lúc.
Lời kết
200Lab hy vọng bài viết này giúp bạn hiểu rõ được định nghĩa API là gì thông qua những ví dụ cũng như bạn đã biết được những kiến trúc phổ biến thường được dùng trong API. Hãy nhớ rằng chọn loại API phù hợp là điều cần thiết cho sự thành công của doanh nghiệp bạn.
Nếu bạn có định hướng trở thành DevOps chuyên nghiệp thì bạn có thể tham khảo khoá học DevOps for Backend Developer tại đây.
Bài viết liên quan:
- 12 nguồn API miễn phí bạn không nên bỏ qua
- HTTP/3 là gì – Giao thức đột phá để tăng tải website

Pum
Life is short. Smile while you still have teeth :)
Bài viết liên quan
Giải pháp scale WebSocket với Socket.IO
Sep 20, 2023 • 11 min read
WebSocket là gì? Lý do sử dụng WebSocket
Sep 20, 2023 • 17 min read
Database là gì? Có những loại database nào và ứng dụng
Sep 16, 2023 • 21 min read
OpenTelemetry: Công cụ giám sát và tối ưu hóa ứng dụng
Sep 16, 2023 • 15 min read
RabbitMQ là gì? RabbitMQ hoạt động như nào?
Sep 14, 2023 • 18 min read
Kafka cơ bản: Cách sử dụng Kafka với Confluent & Go
Aug 26, 2023 • 13 min read