Trang chủ / Hạ tầng & Giao thức
API là gì và cách chúng kết nối các ứng dụng
Khi bạn mở bản đồ, đăng nhập vào một trang web hay thanh toán đơn hàng, bạn đang sử dụng nhiều dịch vụ internet phải phối hợp với nhau. Không ứng dụng nào nắm hết thông tin của ứng dụng khác, nhưng chúng vẫn trao đổi đúng dữ liệu vào đúng thời điểm. Lớp trung gian thầm lặng giúp điều này thành hiện thực chính là API, một người đưa tin hoạt động theo quy tắc xác định. Việc hiểu rõ API hoạt động ra sao và cách các ứng dụng liên kết với nhau giúp lý giải nhiều hành vi quen thuộc của web hiện đại.
API như những người đưa tin giữa các ứng dụng
Giao diện lập trình ứng dụng, hay API, là một bản hợp đồng cho phép một phần mềm yêu cầu phần mềm khác cung cấp thông tin hoặc thực hiện hành động. Nó quy định bên gọi được phép gửi gì, dịch vụ sẽ trả về gì, những lỗi nào có thể xảy ra và những điều kiện nào cần đáp ứng. Bên gọi không cần nhìn thấy mã nguồn hay cơ sở dữ liệu nội bộ của nhà cung cấp. Chỉ cần tuân thủ giao diện đã thỏa thuận là đủ.
Một cách so sánh dễ hiểu là quầy gọi món trong nhà hàng. Khách chọn món từ thực đơn, bếp chuẩn bị món ăn và nhân viên phục vụ mang ra. Khách không bao giờ bước vào bếp. Thực đơn chính là giao diện, đơn gọi món là yêu cầu và món ăn là phản hồi. Trên internet, các ứng dụng đóng những vai trò này khi thông điệp di chuyển qua mạng lưới.
Hầu hết API web hoạt động thông qua yêu cầu và phản hồi. Một yêu cầu thường bao gồm địa chỉ, phương thức mô tả hành động, dữ liệu tùy chọn và đôi khi là thông tin xác thực. Dịch vụ sẽ kiểm tra yêu cầu, thực hiện công việc và gửi lại kết quả. Kết quả đó có thể là vị trí trên bản đồ, xác nhận, danh sách sản phẩm hoặc lỗi giải thích vì sao thao tác không thể tiếp tục.
Bản đồ bên trong một ứng dụng khác
Hãy tưởng tượng một trang web khách sạn hiển thị vị trí của mình trên bản đồ. Khách sạn không cần tự xây dựng dữ liệu đường sá, ảnh vệ tinh hay phần mềm định tuyến. Thay vào đó, trang web của họ gọi đến API của nhà cung cấp bản đồ bằng tọa độ hoặc địa chỉ. Nhà cung cấp trả về dữ liệu bản đồ hoặc một thành phần bản đồ sẵn sàng hiển thị để trang web đặt lên trang.
Yêu cầu có thể là ch��� đường giữa hai điểm. Dịch vụ bản đồ sẽ tính toán lộ trình, sau đó trả về chuỗi các bước đi, khoảng cách và thời gian di chuyển. Trang web trình bày kết quả đó trong giao diện của riêng mình. Mỗi ứng dụng vẫn tập trung vào nhiệm vụ chính: khách sạn quản lý đặt phòng, còn dịch vụ bản đồ quản lý dữ liệu địa lý.
Sự tách biệt này cũng cho phép mỗi bên cập nhật độc lập. Nhà cung cấp bản đồ có thể cải thiện dữ liệu giao thông mà không cần viết lại hệ thống đặt phòng của khách sạn, miễn là hợp đồng API vẫn tương thích. Sự ổn định ở ranh giới này chính là yếu tố giúp các ứng dụng được kết nối vận hành trơn tru cùng nhau.
Đăng nhập mà không cần chia sẻ mật khẩu
Đăng nhập cho thấy một kiểu hội thoại API khác. Khi một trang web cung cấp nút như “Tiếp tục với” nhà cung cấp tài khoản quen thuộc, người dùng không hề đưa mật khẩu cho trang đó. Người dùng xác thực với nhà cung cấp, sau đó nhà cung cấp trả về một bằng chứng định danh có giới hạn cho ứng dụng yêu cầu.
Quy trình này thường tuân theo một quy trình ủy quyền tiêu chuẩn. Ứng dụng yêu cầu nhà cung cấp xác định người dùng, nhà cung cấp xác nhận sự đồng ý, và một mã thông báo ngắn hạn được cấp. Ứng dụng có thể dùng mã này để yêu cầu thông tin hồ sơ cơ bản, như địa chỉ email hoặc tên hiển thị, trong phạm vi người dùng đã cho phép.
API giúp điều này khả thi bằng cách tạo ra ranh giới rõ ràng. Ứng dụng chỉ nhận thông tin cần thiết, và nhà cung cấp có thể thu hồi quyền truy cập mà không cần thay đổi hệ thống mật khẩu của ứng dụng. Người đưa tin mang theo thông tin xác thực và kết quả, nhưng không để lộ cơ sở dữ liệu tài khoản nội bộ của nhà cung cấp.
Thanh toán, thời tiết và tin nhắn
Mô hình tương tự xuất hiện ở nhiều dịch vụ khác. Cửa hàng có thể gửi chi tiết thanh toán đến API của nhà cung cấp thanh toán và nhận về trạng thái như đã duyệt, bị từ chối hoặc cần xem xét thêm. Cửa hàng không trực tiếp xử lý mô hình chống gian lận của nhà cung cấp; nó chỉ xử lý kết quả đã được ghi chép rõ ràng để hiển thị và hành động.
Ứng dụng du lịch có thể hỏi dịch vụ thời tiết về dự báo theo mã thành phố. Bảng điều khiển giao hàng có thể yêu cầu cập nhật theo dõi từ đơn vị vận chuyển. Sản phẩm trò chuyện có thể chuyển tiếp thông báo đến nền tảng nhắn tin. Trong mỗi trường hợp, một ứng dụng dựa vào năng lực của ứng dụng khác thông qua định dạng thông điệp ổn định.
Những trao đổi này thường diễn ra trong nền khi người dùng vẫn tiếp tục một tác vụ duy nhất. Màn hình hiển thị có thể cho thấy bản đồ, thông báo thành công hoặc trạng thái giao hàng, trong khi nhiều lệnh gọi API phối hợp công việc ở phía sau.
Một yêu cầu API điển hình gồm những gì
Mặc dù các API khác nhau, nhiều yêu cầu web vẫn có chung các thành phần:
- Endpoint: địa chỉ của tài nguyên hoặc thao tác được gọi.
- Phương thức (Method): hành động, chẳng hạn như lấy, tạo, cập nhật hoặc xóa dữ liệu.
- Tham số (Parameters): các giá trị tinh chỉnh yêu cầu, như tên thành phố hoặc mã đơn hàng.
- Tiêu đề (Headers): siêu dữ liệu về yêu cầu, bao gồm loại nội dung và thông tin xác thực.
- Thân yêu cầu (Body): dữ liệu có cấu trúc được gửi kèm khi cần.
- Phản hồi (Response): dữ liệu trả về, mã trạng thái và đôi khi là chi tiết lỗi.
Dịch vụ có thể phản hồi bằng trạng thái thành công kèm dữ liệu JSON, hoặc bằng lỗi báo rằng thiếu tham số hay đã chạm giới hạn. API tốt khiến những kết quả này trở nên dễ đoán để ứng dụng có thể xử lý một cách mượt mà.
Vì sao API quan trọng với các dịch vụ trực tuyến
API cho phép phần mềm được lắp ghép từ những thành phần chuyên biệt. Một công ty có thể kết hợp định danh, bản đồ, thanh toán, lưu trữ và nhắn tin mà không cần xây lại từng năng lực từ đầu. Các nhóm có thể cập nhật từng dịch vụ một cách độc lập khi giao diện vẫn ổn định, và đối tác có thể tích hợp mà không cần chia sẻ mã nguồn.
Chúng cũng tạo ra các điểm kiểm soát. Nhà cung cấp có thể xác thực bên gọi, áp dụng giới hạn tần suất, giám sát mức sử dụng và bảo vệ dữ liệu nhạy cảm. Bên sử dụng có thể thay thế nhà cung cấp hoặc bổ sung thêm một bên khác khi hợp đồng đã rõ ràng. Ở khía cạnh này, API không chỉ là bộ kết nối kỹ thuật; chúng là những ranh giới định hình cách hệ thống phát triển.
Đọc hiểu hành vi API một cách tự tin
Khi ứng dụng không tải được bản đồ, không xác nhận được thanh toán hoặc không làm mới được danh sách, vấn đề có thể nằm ở phản hồi API chứ không phải ở chính giao diện. Thông báo lỗi, mã trạng thái và thời gian phản hồi có thể cho biết yêu cầu đã bị từ chối, bị trì hoãn hay hoàn thành với dữ liệu ngoài dự kiến. Mô hình tư duy này biến những lỗi bí ẩn thành chuỗi câu hỏi: điều gì đã được yêu cầu, điều gì đã được trả về và ứng dụng đã làm gì tiếp theo?
API là những người đưa tin giúp các ứng dụng hợp tác trong khi vẫn tách biệt. Chúng mang yêu cầu và phản hồi vượt qua những ranh giới rõ ràng, giúp bản đồ, đăng nhập, thanh toán và nhiều dịch vụ khác phối hợp với nhau. Với bức tranh đó trong đầu, web thường ngày trở nên dễ hiểu hơn: một mạng lưới các chương trình chuyên biệt trao đổi những thông điệp được định nghĩa chặt chẽ để hoàn thành nhiệm vụ chúng ta yêu cầu.
