Здравствуйте
В этой статье я хотел бы рассказать о том, что такое API и для чего он нужен. Как известно всё познаётся на практике. По этому я создам простейший API для своей программы, который должен послужить хорошим примером для новичков.
Что такое API?
Я позволю себе малюсенькую вырезку из вики: «Интерфейс программирования приложений (иногда интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай])[1] — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.»
Для чего нужен API?
Допустим такую ситуацию: Я несколько месяцев, возможно лет, пишу программу. К примеру это чат с кучей крутых и навороченных функций. Я, как грамотный разработчик, реализовал свой протокол для обмена сообщениями, и запихнул его в DLL. Со временем моя программа становится всё известнее и слух о ней доходит до вас. Допустим, что вы захотели использовать мой протокол в своей программе, к примеру вам нужно сделать систему уведомлений пользователя при помощи моего чата. Вы идёте ко мне и говорите о своих намерениях. Я вас поддерживаю, но ведь исходный код я вам точно не дам, т.к. от этого зависит безопасность других пользователей в чате. Что же делать??? Конечно же! Мне, как разработчику, необходимо реализовать свой API!!!
Как создать свой API (пример)?
Для простоты допустим, что в нашей DLL, описывающей протокол, есть всего четыре функции:
function OpenNet: boolean; begin //...... OpenNet:=true; end; function ReadNet: string; begin //... ReadNet:='Send: ...'; end; function WriteNet(s:string): boolean; begin //... WriteNet:=true; end; function CloseNet: boolean; begin //... CloseNet:=true; end;
Для того, чтоб другие программисты смогли использовать мой протокол в собственных целях необходимо им сообщить заголовки функций, то есть составить заголовочный модуль. Отлично! Этим и займёмся!
Вот пример простейшего API заголовочного модуля для нашего чата:
unit ShellNet; interface const PathDll='Net.dll'; function OpenNet: boolean; stdcall; external PathDll; function WriteNet(s: string): boolean; stdcall; external PathDll; function ReadNet: string; stdcall;external PathDll; Function CloseNet:boolean; stdcall;external PathDll; implementation end.
Этот модуль ��ожно опубликовать на официальном сайте проекта и другие программисты смогут использовать функционал вашей программы в своих приложениях. Для этого им придётся лишь скачать и поместить этот модуль в папку с исходным кодом программы, далее в uses дописать название модуля. Это и есть API!!!
Заключение
В данной статье я хотел изнутри показать, что же такое API. Статья ориентирована для начинающих программистов.
