API vs Webservice [fermé]

205

Quelle est la différence entre un webservice et une API? La différence est-elle plus importante que le protocole utilisé pour transférer des données? Merci.

frites
la source
3
Par API, vous voulez dire une API accessible par HTTP? Ou simplement une API ordinaire ordinaire?
Pablo Santa Cruz
1
Voir aussi programmers.SE: Différence entre l'API Web et le service Web?
hippietrail
Tu dois être en train de te moquer de moi. 122 votes positifs et la question est brisée en raison des niveaux de mélange.
Joshua
tu m'as eu, je ne sais pas pourquoi cette question a été fermée
chips

Réponses:

173

Une API (Application Programming Interface) est le moyen par lequel des tiers peuvent écrire du code qui s'interface avec un autre code. Un service Web est un type d'API, qui fonctionne presque toujours sur HTTP (bien que certains, comme SOAP, puissent utiliser des transports alternatifs, comme SMTP). La définition officielle du W3C mentionne que les services Web n'utilisent pas nécessairement HTTP, mais c'est presque toujours le cas et est généralement supposé sauf indication contraire.

Pour des exemples de services Web en particulier, voir SOAP , REST et XML-RPC . Pour un exemple d'un autre type d'API, une écrite en C pour une utilisation sur une machine locale, voir l' API du noyau Linux .

En ce qui concerne le protocole, une API de service Web utilise presque toujours HTTP (d'où la partie Web) et implique définitivement une communication sur un réseau. Les API en général peuvent utiliser tous les moyens de communication de leur choix. L'API du noyau Linux, par exemple, utilise des interruptions pour appeler les appels système qui composent son API pour les appels depuis l'espace utilisateur.

Andrew Cholakian
la source
8
Considérez-vous que chaque service Web est une API? Qu'en est-il lorsque vous utilisez AJAX pour recharger une région d'une page Web au lieu de recharger la page entière? Je ne vois pas nécessairement cela comme une API même si un service Web est impliqué. Sinon, nous pouvons faire valoir que pour chaque bit de fonction jamais créé, que ce soit dans une DLL ou un fichier JAR, un service Web ou du code ordinaire, il s'agit de toutes les API. Pour qu'une API soit une API, elle doit avoir à l'esprit les développeurs tiers et l'API ne doit avoir aucune dépendance avec le produit final (l'application qui utilise l'API).
Ronald
18
Oui, chaque service Web est une API. Oui, un service Web AJAX est une API, il est simplement non documenté et donc pas vraiment destiné à la consommation publique. Toutes les API ne sont pas des API conçues pour une consommation tierce. Vous pouvez également avoir des API internes.
Ryan Shillington
54

Fondamentalement, un webservice est une méthode de communication entre deux machines tandis qu'une API est une couche exposée vous permettant de programmer contre quelque chose.

Vous pourriez très bien avoir une API et la principale méthode d'interaction avec cette API est via un webservice.

Les définitions techniques (gracieuseté de Wikipedia) sont:

API

Une interface de programmation d'applications (API) est un ensemble de routines, de structures de données, de classes d'objets et / ou de protocoles fournis par des bibliothèques et / ou des services de système d'exploitation afin de prendre en charge la création d'applications.

Service Web

Un service Web (également Web Service) est défini par le W3C comme "un système logiciel conçu pour prendre en charge l'interaction interopérable de machine à machine sur un réseau"

Mark Biek
la source
4
Je suis d'accord avec quelqu'un qui s'oppose à ma réponse mais je serais curieux de savoir pourquoi.
Mark Biek
41
Votre réponse implique que les API et les Webservices sont distincts, alors qu'en fait un service Web est un type d'API. Étant donné que le nœud de cette question est la différence entre les deux, il est important que la réponse précise que les services Web sont un type d'API.
Andrew Cholakian le
3
Intéressant. Je vais devoir (respectueusement :)) être en désaccord. Mais j'apprécie les commentaires.
Mark Biek
44

Dans un sens générique, un webservice EST une API sur HTTP. Ils utilisent souvent JSON ou XML, mais il existe également d'autres approches.

cgp
la source
20
Donc, tous les services Web sont des API, mais pas toutes les API sont des services Web?
jetons
13
Droit, les API peuvent être des bibliothèques telles que DLL, ou JARs OCX etc .. Ils peuvent également être une distribution de code source tels que Facebooks PHP api ...
CGP
10

Les API sont une interface publiée qui définit comment le composant A communique avec le composant B.

Par exemple, Doubleclick possède une API Java publiée qui permet aux utilisateurs d'interroger les tables de base de données pour obtenir des informations sur leur campagne de publicité en ligne.

par exemple appelez GetNumberClicks (nom d'utilisateur)

Pour implémenter l'API, vous devez ajouter le fichier Doubleclick .jar à votre chemin de classe. L'appel est local.

Un service Web est une forme d'API où l'interface est définie au moyen d'un WSDL. Cela permet l'appel à distance d'une interface via HTTP.

Si Doubleclick implémentait son interface en tant que service Web, ils utiliseraient quelque chose comme Axis2 fonctionnant dans Tomcat.

L'utilisateur distant appelle le service Web

par exemple appeler GetNumberClicksWebService (nom d'utilisateur)

et le service GetNumberClicksWebService appellerait GetNumberClicks localement.

rbrayb
la source
Cette question est vraiment ancienne, mais je noterai que cette réponse confond les API et les interfaces. Une API est plus qu'une interface publiée (qui inclurait des choses comme SOAP), c'est l'interface publique d'une application ou d'un service particulier. Il serait plus exact de dire quelque chose comme «les API sont des composants qui ont une interface publiée par laquelle des composants tiers peuvent interagir avec eux».
JDB se souvient encore de Monica le
7

API (Application Programming Interface), le formulaire complet lui-même suggère qu'il s'agit d'une interface qui vous permet de programmer pour votre application avec l'aide ou le support d'une autre interface d'application qui expose une sorte de fonctionnalité utile à votre application.

Par exemple, afficher les taux de change mis à jour sur votre site Web nécessiterait une interface tierce pour la programmation, à moins que vous ne prévoyiez d'avoir votre propre base de données avec des taux de change et des mises à jour régulières. Cet ensemble de fonctionnalités est lorsqu'il est déjà disponible avec quelqu'un d'autre et lorsqu'il veut le partager avec d'autres, il doit avoir un point de terminaison pour communiquer avec les autres qui sont intéressés par de telles interactions afin de le déployer sur le Web au moyen du Web. prestations de service. Ce point final n'est rien d'autre que l'interface de leur application contre laquelle vous pouvez programmer, d'où l'API.

Manoj Dwivedi
la source
4

L'API est une intégration basée sur du code tandis que le service Web est une intégration basée sur un message avec des normes interopérables ayant un contrat tel que WSDL.

Pingala
la source
Je ne suis pas sûr que votre réponse ajoute quoi que ce soit aux réponses existantes.
andrewsi
3

Considérez le service Web comme une API Web. L'API est désormais un terme si général qu'un service Web est une interface vers des fonctionnalités, généralement liées à l'entreprise, auxquelles vous pouvez accéder à partir du réseau via une variété de protocoles.

Joshua Belden
la source
1

Consultez ce http://en.wikipedia.org/wiki/Web_service

Comme le lien mentionné, l'API Web est un développement de services Web qui se rapporte probablement au Web 2.0, tandis que les services basés sur SOAP sont remplacés par des communications basées sur REST. Notez que les services REST ne nécessitent pas de définitions XML, SOAP ou WSDL de service-API, ce qui est très différent du service Web traditionnel.

longbkit
la source
0

un autre exemple: google map api vs google direction api web service, tandis que le premier sert (délivre) un fichier javascript au site (qui peut ensuite être utilisé comme api pour créer de nouvelles fonctions), le dernier est un service Web Rest fournissant des données ( au format json ou xml), qui peut être traité (mais pas utilisé dans un sens api).

anu
la source
1
Uhm ... javascript peut être retourné sous forme de données puis utilisé comme code, ce n'est pas un contraste valide
David C