Developers sử dụng APIs để kết nối giữa các chunks code nhỏ và rời rạc để tạo thành các ứng dụng mạnh mẽ, tin cậy, bảo mật và có thể đáp ứng nhu cầu của người dùng. Mặc dù bạn không thể nhìn thấy chúng nhưng APIs có mặt ở khắp mọi nơi, làm việc liên tục dưới background để mang lại trải nghiệm số mà đã trở nên cần thiết trong cuộc sống của tất cả mọi người.
API hoạt động như thế nào?
API hoạt động bằng việc chia sẻ dữ liệu giữa các ứng dụng, các hệ thống và các thiết bị. Việc này xảy ra thông qua một vòng lặp request và response. Một người dùng khởi tạo một request dữ liệu bằng việc tương tác với ứng dụng. Request sẽ được gửi tới API - thứ sẽ đọc dữ liệu và gửi trả về cho người dùng.
Để hiểu hơn về quá trình này, hãy tưởng tượng APIs giống như các nhà hàng. Trong tình huống này, khách hàng sẽ là các người dùng, họ sẽ bảo nhân viên phục vụ những gì họ muốn. Nhân viên phục vụ ở đây sẽ giống như là một API, nhận yêu cầu của khách hàng và chuyển nó thành các chỉ dẫn dễ hiểu cho bếp (nhiều khi có thể là các viết tắt hay một loại code nào đó đã được quy định trước mà bếp có thể hiểu được). Nhân viên bếp giống như API server vì họ tạo ra các món ăn như yêu cầu của khách hàng và chuyển chúng cho nhân viên phục vụ - người sẽ trực tiếp chuyển tới tay khách hàng.
Khi đã nắm được sơ bộ ví dụ trên, bạn có thể đọc sâu hơn về các thành phần khác nhau của API, bắt đầu với API client. API client chịu trách nhiệm sắp xếp các requests để gửi tới API endpoint chính xác. Endpoint là URI (Uniform Resource Identifier) cung cấp truy cập tới các resources cụ thể trong một database. Ví dụ nếu người dùng muốn xem tất cả các sản phẩm của một cửa hàng trực tuyến, API client sẽ gửi GET request tới /products
endpoint.
Các loại APIs và cách chúng được sử dụng?
Có rất nhiều loại APIs khác nhau và cách để phân loại chúng. Ví dụ bạn có thể phân loại APIs bởi người truy cập chúng. Các loại này bao gồm:
- Private APIs: Private APIs còn được gọi là APIs nội bộ, được sử dụng để kết nối các thành phần phần mềm khác nhau trong mọt cơ quan duy nhất và không được sử dụng bởi các bên thứ ba khác.
Public APIs: Public APIs cung cấp quyền truy cập tới dữ liệu, chức năng hoặc dịch vụ của một cơ quan, các developer bên thứ ba có thể tích hợp chúng vào các ứng dụng của chính họ.
Partner APIs: Partner APIs cho phép hai hay nhiều các cơ quan chia sẻ dữ liệu hoặc chức năng để hợp tác trong một dự án. Chúng không được truy cập bởi public vì thế chúng cần được sử dụng các kĩ thuật xác thực (authentication) để đảm bảo chúng chỉ được sử dụng bởi các bên đã được xác thực.
Chúng ta cũng có thể phân loại API dựa vào kiến trúc của chúng. Một số kiến trúc phổ biến nhất:
- REST: Như đã được đề cập ở trên, REST là API phổ biến nhất để vận chuyển dữ liệu qua Internet. Trong một RESTful context, resources được truy cập thông qua endpoints và quy trình được thực thi trên các resources đó với các method HTTP cơ bản như GET, POST, PUT và DELETE.
SOAP: SOAP (Simple Object Access Protocol) sử dụng XML để vận chuyển các thông điệp có cấu trúc giữa người dùng và server. SOAP thường được dùng trong môi trường doanh nghiệp hoặc các hệ thống legacy, mặc dù sở hữu nhiều tính năng bảo mật cao cấp nhưng SOAP lại chậm hơn so với các kiến trúc API khác.
GraphQL: GraphQL là một ngôn ngữ query mã nguồn mở cho phép người dùng tương tác với một API endpoint duy nhất để đọc chính xác dữ liệu mà họ cần mà không phải kết hợp nhiều request lại với nhau. Cách tiếp cận này giúp giảm số lượng round trips giữa người dùng và server - thứ có thể hữu dụng cho các ứng dụng chạy trong môi trường kết nối không ổn định hoặc chậm.
Webhooks: Webhooks được dùng để phát triển các kiến trúc event-driven, nơi các requests được gửi tự động dựa vào event-based triggers. Ví dụ khi một event nào đó xảy ra trong ứng dụng như là thanh toán thành công chẳng hạn, ứng dụng có thể gửi HTTP request tới một webhook URL đã được cấu hình sẵn với các dữ liệu về event trong request payload. Hệ thống nhận webhook có thể xử lý event và đưa ra hành động chính xác.
gRPC: Trong gRPC (Remote Procedure Call) một người dùng có thể gọi một server như một local object, việc này sẽ giúp đơn giản hóa các ứng dụng distributed và hệ thống để giao tiếp với một hệ thống khác. gRPC thường được sử dụng để giao tiếp server-server nhiều hơn là client-server.
Kết luận
Vậy là chúng ta đã tìm hiểu cách API hoạt động và các loại API cơ bản. Mong rằng sau bài viết này các bạn có thể hiểu hơn cũng như không còn bỡ ngỡ khi gặp các thuật ngữ trên trong các bài viết technical blog khác :D