API проти веб-сервісу [закрито]


204

Чим відрізняється веб-служба та API? Чи різниця більше, ніж протокол, який використовується для передачі даних? Дякую.


3
Під API ви маєте на увазі API, до якого звертається HTTP? Або просто звичайний звичайний API?
Пабло Санта-Крус


1
Дивіться також програмісти.SE: Різниця між веб-API та веб-сервісом?
hippietrail

Ти мусиш жартувати мене. 122 оновлення і питання порушено через змішування рівнів.
Джошуа

Ви мене зрозуміли, я не впевнений, чому це питання було закрито
фішки

Відповіді:


172

API (Application Programming Interface) - це засіб, за допомогою якого треті сторони можуть записувати код, який взаємодіє з іншим кодом. Веб-сервіс - це тип API, який майже завжди працює через HTTP (хоча деякі, як SOAP, можуть використовувати альтернативні перевезення, як SMTP). В офіційному визначенні W3C зазначається, що веб-сервіси не обов'язково використовують HTTP, але це майже завжди так і зазвичай передбачається, якщо не зазначено інше.

Приклади веб-служб, зокрема, див. SOAP , REST та XML-RPC . Для прикладу іншого типу API, написаного на C для використання на локальній машині, див . API Kernel Linux .

Що стосується протоколу, API веб-сервісу майже завжди використовує HTTP (звідси і веб-частина) і, безумовно, включає зв'язок по мережі. API взагалі можуть використовувати будь-які засоби комунікації, які вони бажають. Наприклад, API ядра Linux використовує Переривання для виклику системних викликів, що містять його API для викликів з простору користувача.


8
Чи вважаєте ви кожну веб-службу API? Як щодо використання AJAX для перезавантаження регіону веб-сторінки на відміну від перезавантаження всієї сторінки? Я не обов'язково розглядаю це як API, навіть якщо задіяний веб-сервіс. В іншому випадку ми можемо зробити випадок, коли для кожного біта створеної функції, будь то в DLL або JAR, веб-службі чи простому коді, це усі API. Щоб API був API, він повинен мати на увазі сторонніх розробників, а API не повинен мати ніякої залежності від кінцевого продукту (додатка, що використовує API).
Рональд

18
Так, кожна веб-служба - це API. Так, веб-сервіс AJAX - це API, він просто недокументований і тому насправді не призначений для громадського споживання. Не кожен API - це API, призначений для споживання сторонніми сторонами. Ви також можете мати внутрішні API.
Райан Шиллінгтон

54

В основному, веб-сервіс - це метод зв'язку між двома машинами, тоді як API - це відкритий рівень, який дозволяє програмувати проти чогось.

Ви можете дуже добре мати API, і основний метод взаємодії з цим API - це через веб-сервіс.

Технічні визначення (надано Вікіпедією):

API

Інтерфейс програмування прикладних програм (API) - це набір процедур, структур даних, класів об'єктів та / або протоколів, що надаються бібліотеками та / або службами операційної системи з метою підтримки побудови програм.

Веб-сервіс

Веб-сервіс (також Веб-сервіс) визначається W3C як "програмна система, розроблена для підтримки взаємодію машини-машини взаємодією по мережі"


4
Я все в порядку, коли хтось заперечує проти моєї відповіді, але мені б цікаво дізнатися чому.
Марк Бік

41
Ваша відповідь означає, що API та веб-сервіси є різними, адже веб-служба насправді є типом API. Оскільки суть цього питання полягає в тому, у чому різниця між ними, для відповіді важливо уточнити, що веб-сервіси - це тип API.
Андрій Чолакіян

3
Цікаво. Мені доведеться (з повагою :)) не погодитися. Але я ціную відгуки.
Марк Бік

44

У загальному сенсі Вебсервіс IS API через HTTP. Вони часто використовують JSON або XML, але є й інші підходи.


20
Отже, всі веб-сервіси є API, але чи не всі API - це веб-сервіс?
фішки

13
Правильно, API можуть бути бібліотеками, такими як DLL, JAR або OCX тощо. Вони також можуть бути розповсюдженням вихідного коду, наприклад, PHP api для Facebooks ...
cgp

10

API - це опублікований інтерфейс, який визначає, як компонент A спілкується з компонентом B.

Наприклад, Doubleclick має опублікований Java API, який дозволяє користувачам допитувати таблиці баз даних, щоб отримати інформацію про свою рекламну кампанію в Інтернеті.

наприклад, дзвоніть GetNumberClicks (ім'я користувача)

Щоб реалізувати API, вам потрібно додати файл Doubleclick .jar до шляху вашого класу. Дзвінок місцевий.

Веб-сервіс - це форма API, де інтерфейс визначається за допомогою WSDL. Це дозволяє віддалений виклик інтерфейсу через HTTP.

Якби Doubleclick реалізував їх інтерфейс як веб-сервіс, вони використовували б щось на зразок Axis2, що працює в Tomcat.

Віддалений користувач закликав би веб-сервіс

наприклад, зателефонуйте GetNumberClicksWebService (ім'я користувача)

і служба GetNumberClicksWebService зателефонувала б на GetNumberClicks локально.


Це запитання справді старе, але зазначу, що ця відповідь плутає API та інтерфейси. API - це більше, ніж опублікований інтерфейс (який би включав такі речі, як SOAP), це публічний інтерфейс до певного додатку чи послуги. Було б точніше сказати щось на кшталт "API - це компоненти, які мають опублікований інтерфейс, завдяки якому сторонні компоненти можуть взаємодіяти з ними".
JDB досі пам’ятає Моніку

7

API (Application Programming Interface), сама повна форма підказує, що це інтерфейс, який дозволяє програмувати для вашої програми за допомогою або підтримки якогось іншого інтерфейсу програми, який відкриває певну функціональність, корисну для вашої програми.

Наприклад, що показує оновлені курси валют на вашому веб-сайті, потрібен інтерфейс третьої сторони для програмування, якщо ви не плануєте мати свою власну базу даних із курсами валют і регулярними оновленнями до них. Цей набір функціональних можливостей є, коли вони вже доступні для когось іншого, і коли вони хочуть поділитися ним з іншими, вони повинні мати кінцеву точку для спілкування з іншими, хто зацікавлений у таких взаємодіях, тому вони розгортають його в Інтернеті за допомогою веб- послуги. Ця кінцева точка - це не що інше, як інтерфейс їхнього застосування, який ви можете запрограмувати проти API.


4

API - інтеграція на основі коду, в той час як веб-служба - це інтеграція на основі повідомлень з сумісними стандартами, що мають контракт, такий як WSDL.


Я не впевнений, що ваша відповідь щось додає до існуючих відповідей.
andrewsi

3

Подумайте про веб-сервіс як веб-інтерфейс. API зараз є таким загальним терміном, тому веб-сервіс - це інтерфейс до функціональних можливостей, як правило, пов'язаних з бізнесом, до яких можна дістатися з мережі через різні протоколи.


1

Перевірте це http://en.wikipedia.org/wiki/Web_service

Як згадувалося посилання, тоді Web API - це розробка веб-сервісів, яка, швидше за все, стосується Web 2.0, тоді як послуги на основі SOAP замінюються комунікаціями на основі REST. Зауважте, що послуги REST не вимагають визначення API-API XML, SOAP або WSDL, тому це істотно відрізняється від традиційного веб-сервісу.


0

інший приклад: веб-сервіс api vs api vs google map api, в той час як колишній обслуговує (доставляє) файл JavaScript на сайт (який потім може бути використаний як api для створення нових функцій), пізніший - веб-сервіс "Відпочинок", що надає дані ( у форматі json або xml), який можна обробити (але не використовувати в api-сенсі).


1
Гм ... javascript можна повернути як дані, а потім використовувати як код, це не є дійсним контрастом
David C
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.