Giao tiếp lập trình ứng dụng mở

Giao tiếp lập trình ứng dụng mở (Open API) (thường được gọi là một giao tiếp lập trình ứng dụng công cộng.) là một giao tiếp lập trình ứng dụng công khai cung cấp cho các nhà phát triển các truy cập bằng chương trình tới một phần mềm độc quyền hoặc dịch vụ web. Giao tiếp lập trình ứng dụng (API) là bộ các yêu cầu, điều hành việc làm thế nào một ứng dụng có thể giao tiếp và tương tác với ứng dụng khác. APIs cũng có thể cho phép các nhà phát triển truy cập vào một số các chức năng nội bộ của một chương trình, mặc dù điều này không tiêu biểu đối với giao tiếp lập trình ứng dụng dạng web(web APIs). Theo nghĩa đơn giản nhất, API cho phép một bộ phận phần mềm giao tiếp với một bộ phận phần mềm khác, hoặc là cùng trên một máy tính sử dụng cơ chế cung cấp bởi hệ điều hành, hoặc là qua một mạng nội bộ hoặc mạng ngoài sử dụng TCP/IP hoặc không sử dụng TCP/IP. Vào cuối năm 2010 nhiều APIs được cung cấp bởi các tổ chức cho phép truy cập bằng HTTP. APIs có thể được sử dụng bởi cả nhà phát triển bên trong tổ chức cung cấp API,  hoặc bởi bất kỳ nhà phát triển nào ở ngoài tổ chức muốn đăng ký truy cập giao tiếp lập trình ứng dụng đó.

== Đặc điểm ==
Giao tiếp lập trình ứng dụng mở có 3 đặc điểm chính

1. Các giao tiếp diện lập trình ứng dụng mở sẵn sàng để sử dụng bởi nhà phát triển và những người sử dụng khác với tương đối ít hạn chế. Hạn chế có thể bao gồm những điều cần thiết để đăng ký với dịch vụ cung cấp các giao tiếp lập trình đó.
2. Các giao tiếp lập trình ứng dụng mở thường được hỗ trợ bằng cách dữ liệu mở. Các dữ liệu mở là hoàn toàn miễn phí, có sẵn cho mọi người sử dụng và xuất bản lại tùy theo ý của người sử dụng, mà không bị hạn chế do vấn đề bản quyền, bằng sáng chế, hoặc khác cơ chế  kiểm soát khác. Một giao tiếp lập trình ứng dụng mở có thể là sử dụng miễn phí, nhưng các nhà cung cấp có thể giới hạn cách thức mà các dữ liệu của giao tiếp lập trình ứng dụng đó có thể được sử dụng.
3. Các giao tiếp lập trình ứng dụng mở đều dựa trên một chuẩn mở.

== So sánh giao tiếp lập trình ứng dụng mở và đóng ==
=== API đóng ===
API đóng là một giao tiếp chỉ mở bộ phận dữ liệu và chức năng của một tổ chức cho sử dụng bởi nhà phát triển làm việc trong (hoặc nhà thầu làm việc cho) cho tổ chức đó.API đóng chỉ đưa ra với đội phát triển nội bộ vì vậy các nhà cung cấp API đóng có toàn quyền kiểm soát những gì và làm thế nào ứng dụng được phát triển. API đóng cung cấp lợi ích đáng kể, liên quan đến hợp tác nội bộ. Sử dụng một API đóng xuyên suốt một tổ chức cho phép chia sẻ nhận thức của các mô hình dữ liệu nội bộ. Vì nhà đang làm việc cho (hoặc ký hợp đồng với), một tổ chức, việc liên lạc sẽ được trực tiếp hơn và do đó họ có thể làm việc chặt chẽ như một nhóm. API đóng có thể giảm đáng kể thời gian  cần thiết để xây dựng và duy trì hệ thống nội bộ, tối đa hóa năng suất  và tạo ra với các ứng dụng giao tiếp với khách hàng có thể cải thiện việc tiếp cận thị trường và thêm các giá trị cho các dịch vụ hiện có.

=== API mở ===
Trái ngược với một API đóng, một API mở được công khai cho mọi nhà phát triển truy cập. Các API này cho phép các nhà phát triển bên ngoài lực lượng sản xuất của một tổ chức có thể truy cập vào dữ liệu bên trong sau đó có thể được sử dụng để nâng cao chính ứng dụng riêng của tổ chức đó. API mở có thể tăng doanh thu đáng kể mà không doanh nghiệp không phải đầu tư vào việc thuê các nhà phát triển mới. Điều này làm cho các API mở trở thành một kiểu ứng dụng sinh lợi nhiều. Tuy nhiên, điều quan trọng là phải nhớ rằng việc mở các thông tin bên trong cho cộng đồng sẽ tạo ra nhiều thách thức về an ninh và quản lý. Ví dụ, cung cấp các API mở có thể làm cho một tổ chức trở nên khó khăn hơn trong việc kiểm soát những trải nghiệm của người dùng cuối đối với tài sản thông tin của họ. Nhà cung cấp API mở không thể giả định rằng ứng dụng khách xây dựng trên API của họ sẽ cung cấp trải nghiệm người dùng tốt. Hơn nữa, họ không thể hoàn toàn đảm bảo rằng các ứng dụng khách sẽ duy trì giao diện và cảm nhận theo đúng thương hiệu của họ.

== API mở trong doanh nghiệp ==
 API mở có thể được sử dụng bởi các doanh nghiệp muốn tận dụng cộng đồng nhà phát triển tự do, những người có khả năng tạo ra các ứng dụng mang tính sáng tạo, làm tăng thêm giá trị mảng kinh doanh chính của họ. API mở được ưa thích ở các doanh nghiệp trong cùng một nhóm vì họ cùng đồng thời tăng năng lực tạo ra các ý tưởng mới mà không phải đầu tư trực tiếp vào năng lực phát triển. Các doanh nghiệp thường thay đổi API của họ hướng theo các đối tượng nhà phát triển cụ thể mà họ cảm thấy sẽ có hiệu quả nhất trong việc tạo ra các ứng dụng mới có giá trị. Tuy nhiên, một API  có thể giảm đáng kể của chức năng của một ứng dụng nếu nó bị quá tải với quá nhiều tính năng.

Ví dụ, Yahoo mở API tìm kiếm cho phép phát triển để tích hợp công cụ tìm kiếm của Yahoo vào phần mềm của riêng mình. Các bổ sung của API này cung cấp tính năng tìm kiếm cho các ứng dụng của các nhà phát triển trong khi cũng tăng lượng truy cập cho công cụ tìm kiếm của Yahoo do đó có lợi cho cả hai bên. Đối với Facebook và Twitter, chúng ta có thể thấy cách mà thứ ba bên đã làm phong phú những dịch vụ của mình bằng chương trình của chính họ. Ví dụ, khả năng để tạo ra một tài khoản trên một trang/ứng dụng bên ngoài bằng cách sử dụng Facebook của một người, có thể thực hiện được qua các API mở của Facebook.

Nhiều công ty công nghệ lớn các công ty như Twitter, LinkedIn và Facebook, cho phép sử dụng dịch vụ của họ bởi thứ ba bên và cả các đối thủ cạnh tranh.

== Giao tiếp lập trình ứng dụng mở trên Web ==
Với sự gia tăng nổi bật của HTML5 và Web 2.0, các trải nghiệm duyệt web trở nên có tính tương tác và động, và việc này, đến lượt nó, được tăng tốc nhờ sử dụng các API mở. Một số API mở thu thập dữ liệu từ các cơ sở dữ liệu phía sau một trang web và chúng được gọi là Web APIs. Ví dụ, Google Youtube API cho phép các nhà phát triển tích hợp YouTube vào các ứng dụng của họ bằng cách cung cấp khả năng để tìm kiếm video, lấy về các kênh cung cấp, và xem nội dung liên quan.

 API trên web được sử dụng để trao đổi thông tin với một trang web hoặc bằng cách nhận hoặc bằng cách gửi dữ liệu. Khi một API lấy dữ liệu từ một trang web, các ứng dụng xây dựng nên một yêu cầu HTTP được cấu trúc cẩn trọng, gửi chúng tới máy chủ lưu trữ. Các máy chủ đó sẽ gửi dữ liệu trở lại theo một dạng ứng dụng mong muốn (nếu ứng dụng yêu cầu dữ liệu) hoặc kết hợp các thay đổi bởi ứng dụng vào trang web (nếu ứng dụng gửi dữ liệu).

== Xem thêm ==
- Đặc tả giao tiếp lập trình ứng dụng mở
- Danh sách giao tiếp lập trình ứng dụng mở
- Application enablement
- Hệ thống mở (máy tính)
- Mashup (ứng dụng web lai)
- Webhook