Một giao diện chương trình ứng dụng (tiếng Anh: application programming interface, viết tắt: API) là một giao diện mà một hệ thống máy tính hay ứng dụng cung cấp để cho phép các yêu cầu dịch vụ có thể được tạo ra từ các chương trình máy tính khác, và/hoặc cho phép dữ liệu có thể được trao đổi qua lại giữa chúng. Chẳng hạn, một chương trình máy tính có thể (và thường là phải) dùng các hàm API của hệ điều hành để xin cấp phát bộ nhớ và truy xuất tập tin. Nhiều loại hệ thống và ứng dụng thực hiện API, như các hệ thống đồ họa, cơ sở dữ liệu, mạng, dịch vụ web, và ngay cả một số trò chơi máy tính. Đây là phần mềm hệ thống cung cấp đầy đủ các chức năng và các tài nguyên mà các lập trình viên có thể rút ra từ đó để tạo nên các tính năng giao tiếp người - máy như: các trình đơn kéo xuống, tên lệnh, hộp hội thoại, lệnh bàn phím và các cửa sổ. Một trình ứng dụng có thể sử dụng nó để yêu cầu và thi hành các dịch vụ cấp thấp do hệ điều hành của máy tính thực hiện. Giao diện chương trình ứng dụng giúp ích rất nhiều cho người sử dụng vì nó cho phép tiết kiệm được nhiều thời gian tìm hiểu các chương trình mới, do đó khuyến khích mọi người dùng nhiều ứng dụng hơn.
Mô tả chi tiết
Một trong các mục đích chính của một API là cung cấp khả năng truy xuất đến một tập các hàm hay dùng — ví dụ, hàm để vẽ các cửa sổ hay các icon trên màn hình. Các API, cũng như hầu hết các interfaces, là trừu tượng (abstract). Phần mềm mà muốn cung cấp truy xuất đến chính nó thông qua các API cho sẵn, phải hiện thực API đó. Trong nhiều tình huống, một API thường là một phần của bộ SDK, hay bộ công cụ phát triển phần mềm. Một bộ SDK có thể bao gồm một API cũng như các công cụ/phần cứng, vì thế hai thuật ngữ này không thay thế cho nhau được.
Có nhiều mô hình thiết kế khác nhau cho các API. Interfaces nhằm là cách thực thi nhanh nhất thường gồm các tập hàm, thủ tục, biến và cấu trúc dữ liệu. Tuy nhiên, các mô hình khác vẫn tồn tại, như bộ thông dịch dùng để đánh giá biểu thức trong ECMAScript/JavaScript. Một API tốt thường cung cấp một 'hộp đen' hay là một lớp trừu tượng (abstraction layer) bao bọc nó, nhằm đảm bảo lập trình viên không thể biết cách hiện thực cụ thể bên trong của mỗi hàm trong API. Điều này giúp việc thiết kế lại hay cải tiến hàm của API dễ dàng hơn vì không làm ảnh hưởng đến các đoạn mã khác sử dụng các hàm đó.
Có hai chính sách đối với việc công bố các API:
- Một số công ty bảo vệ API của họ mạnh mẽ. Ví dụ, Sony thường chỉ cung cấp API chính thức của PlayStation 2 cho các nhà phát triển PlayStation có đăng ký. Điều này là vì Sony muốn giới hạn những người có thể viết trò chơi trên PlayStation 2, và muốn thu lợi nhuận từ những người này càng nhiều càng tốt. Đây thường là chính sách của các công ty không thu lợi từ việc bán các hiện thực API của họ. Tuy nhiên, PlayStation 3 công bố hoàn toàn API.
- Một số công ty cung cấp miễn phí API. Ví dụ, Microsoft công bố hầu như hoàn toàn thông tin về các API, để cho phần mềm có thể được viết chạy trên nền Windows. Việc bán phần mềm hãng thứ ba đồng thời với việc phải mua hệ điều hành Microsoft Windows. Đây thường là các công ty thu lợi nhuận từ việc bán các hiện thực API.
Một số API, chẳng hạn các API chuẩn cho một hệ điều hành, được hiện thực dưới dạng các thư viện mã độc lập phân phối kèm hệ điều hành. Một số khác đòi hỏi nhà sản xuất phần mềm phải tích hợp API trực tiếp vào chương trình. Microsoft Windows API đi kèm hệ điều hành cho phép mọi người sử dụng chúng. Phần mềm cho các hệ thống nhúng như thiết bị chơi trò chơi thường thuộc loại tích hợp vào ứng dụng. Trong khi các tài liệu API chính thức của PlayStation là cần thiết, nhưng nó chẳng giúp ích gì nếu không có các hiện thực của nó, dưới dạng thư viện độc lập hay bộ công cụ phát triển phần mềm.
Một API cho phép truy xuất và sử dụng tự do được gọi là 'mở.' Các API được cung cấp bởi phần mềm mở (như mọi phần mềm phân phối theo giấy phép GNU), là mở đúng nghĩa, vì mọi người có thể xem mã nguồn và tìm ra API. Mặc dù tham khảo hiện thực vẫn tồn tại cho một API (như với Microsoft Windows cho Win32 API), thì việc tạo thêm các hiện thực bổ sung vẫn có thể diễn ra. Ví dụ, hầu hết các Win32 API có thể được cung cấp từ hệ thống UNIX dùng phần mềm tên là Wine.
- Simple DirectMedia Layer - Thư viện lập trình đa phương tiện, đa nền tảng SDL
- Document Object Model
- Microsoft Platform Development Kit - Bộ công cụ phát triển nền tảng Microsoft Windows
- Giao diện nhị phân ứng dụng (ABI)
- Ontology
- Định nghĩa giao diện dịch vụ mở (OSID)
- Plugin
- DirectX
- Universal Home API
- Giao diện cuộc gọi BIOS
- Tiêu chuẩn UNIX duy nhất
- Java API
- ASPI - giao diện lập trình ứng dụng cho phần cứng
- Carbon và Cocoa
Kết nối ngoài
- eBay API
- EVDB API Lưu trữ 2005-12-26 tại Wayback Machine
- Flickr API
- Google API
- Linux Kernel API Lưu trữ 2005-12-25 tại Wayback Machine
- Skype API Lưu trữ 2005-12-27 tại Wayback Machine
- Yahoo API Lưu trữ 2011-12-19 tại Wayback Machine
- Java API
- PayPal API Lưu trữ 2023-04-15 tại Wayback Machine
Hệ điều hành | |||||
---|---|---|---|---|---|
Chung |
| ||||
Hạt nhân |
| ||||
Quản lý tiến trình |
| ||||
Quản lý bộ nhớ và bảo vệ tài nguyên |
| ||||
Truy cập lưu trữ và hệ thống tập tin |
| ||||
Danh sách |
| ||||
Khái niệm khác |
|