API frente a servicio web [cerrado]

205

¿Cuál es la diferencia entre un servicio web y una API? ¿Es la diferencia más que el protocolo utilizado para transferir datos? Gracias.

papas fritas
fuente
3
Por API, ¿quiere decir una API a la que accede HTTP? ¿O simplemente una API normal normal?
Pablo Santa Cruz
1
Ver también programadores. SE
hippietrail
Tienes que estar bromeando. 122 votos a favor y la pregunta se rompe debido a los niveles de mezcla.
Joshua
me tienes, no estoy seguro de por qué esta pregunta se cerró
chips

Respuestas:

173

Una API (interfaz de programación de aplicaciones) es el medio por el cual terceros pueden escribir código que interactúa con otro código. Un servicio web es un tipo de API, uno que casi siempre opera a través de HTTP (aunque algunos, como SOAP, pueden usar transportes alternativos, como SMTP). La definición oficial del W3C menciona que los servicios web no necesariamente usan HTTP, pero este es casi siempre el caso y generalmente se asume a menos que se mencione lo contrario.

Para ver ejemplos de servicios web específicamente, consulte SOAP , REST y XML-RPC . Para ver un ejemplo de otro tipo de API, uno escrito en C para usar en una máquina local, consulte la API del kernel de Linux .

En lo que respecta al protocolo, una API de servicio web casi siempre usa HTTP (de ahí el elemento web), y definitivamente implica la comunicación a través de una red. Las API en general pueden usar cualquier medio de comunicación que deseen. La API del kernel de Linux, por ejemplo, usa interrupciones para invocar las llamadas del sistema que comprenden su API para llamadas desde el espacio del usuario.

Andrew Cholakian
fuente
8
¿Consideraría que todos los servicios web son API? ¿Qué tal cuando se usa AJAX para recargar una región de una página web en lugar de recargar toda la página? No necesariamente veo esto como API a pesar de que un servicio web está involucrado. De lo contrario, podemos argumentar que para cada bit de función que se haya creado, ya sea en un archivo DLL o JAR, servicio web o código simple para que sean todas las API. Para que una API sea API, debe tener en cuenta a los desarrolladores externos y la API no debe tener ninguna dependencia con el producto final (la aplicación que utiliza la API).
Ronald
18
Sí, cada servicio web es una API. Sí, un servicio web AJAX es una API, simplemente no está documentado y, por lo tanto, no está destinado al consumo público. No todas las API son API diseñadas para el consumo de terceros. También puedes tener API internas.
Ryan Shillington
54

Básicamente, un servicio web es un método de comunicación entre dos máquinas, mientras que una API es una capa expuesta que le permite programar contra algo.

Muy bien podría tener una API y el método principal para interactuar con esa API es a través de un servicio web.

Las definiciones técnicas (cortesía de Wikipedia) son:

API

Una interfaz de programación de aplicaciones (API) es un conjunto de rutinas, estructuras de datos, clases de objetos y / o protocolos proporcionados por bibliotecas y / o servicios del sistema operativo para apoyar la creación de aplicaciones.

Servicio web

El W3C define un servicio web (también Servicio web) como "un sistema de software diseñado para soportar la interacción interoperable de máquina a máquina a través de una red"

Mark Biek
fuente
44
Estoy de acuerdo con que alguien se oponga a mi respuesta, pero me gustaría saber por qué.
Mark Biek el
41
Su respuesta implica que las API y los servicios web son distintos, cuando en realidad un servicio web es un tipo de API. Dado que el quid de esta pregunta es cuál es la diferencia entre los dos, es importante que la respuesta aclare que los servicios web son un tipo de API.
Andrew Cholakian
3
Interesante. Voy a tener que (respetuosamente :)) estar en desacuerdo. Pero aprecio los comentarios.
Mark Biek el
44

En un sentido genérico, un servicio web ES una API sobre HTTP. A menudo utilizan JSON o XML, pero también hay otros enfoques.

cgp
fuente
20
Entonces, ¿todos los servicios web son API pero no todas las API son un servicio web?
chips
13
Derecha, APIs pueden ser bibliotecas tales como DLLs, JAR o OCX, etc .. También pueden ser una distribución de código fuente como Facebooks' PHP API ...
CGP
10

Las API son una interfaz publicada que define cómo se comunica el componente A con el componente B.

Por ejemplo, Doubleclick tiene una API Java publicada que permite a los usuarios interrogar las tablas de la base de datos para obtener información sobre su campaña publicitaria en línea.

por ejemplo, llame a GetNumberClicks (nombre de usuario)

Para implementar la API, debe agregar el archivo DoubleClick .jar a su ruta de clase. La llamada es local.

Un servicio web es una forma de API donde la interfaz se define mediante un WSDL. Esto permite llamadas remotas de una interfaz a través de HTTP.

Si Doubleclick implementara su interfaz como un servicio web, usarían algo como Axis2 ejecutándose dentro de Tomcat.

El usuario remoto llamaría al servicio web.

por ejemplo, llame a GetNumberClicksWebService (nombre de usuario)

y el servicio GetNumberClicksWebService llamaría a GetNumberClicks localmente.

rbrayb
fuente
Esta pregunta es muy antigua, pero notaré que esta respuesta confunde las API y las interfaces. Una API es más que una interfaz publicada (que incluiría cosas como SOAP), es la interfaz pública para una aplicación o servicio en particular. Sería más exacto decir algo como "Las API son componentes que tienen una interfaz publicada por la cual los componentes de terceros pueden interactuar con ellos".
JDB todavía recuerda a Mónica el
7

API (interfaz de programación de aplicaciones), el formulario completo en sí sugiere que es una interfaz que le permite programar su aplicación con la ayuda o el soporte de alguna otra interfaz de aplicación que expone algún tipo de funcionalidad que sea útil para su aplicación.

Por ejemplo, mostrar tasas de cambio de divisas actualizadas en su sitio web necesitaría alguna interfaz de terceros para programar, a menos que planee tener su propia base de datos con tasas de cambio y actualizaciones periódicas de las mismas. Este conjunto de funciones es cuando ya está disponible con alguien más y cuando quieren compartirlo con otros tienen que tener un punto final para comunicarse con los demás interesados ​​en tales interacciones para que lo implementen en la web a través de la web. servicios. Este punto final no es más que la interfaz de su aplicación con la que puede programar, por lo tanto, API.

Manoj Dwivedi
fuente
4

API es integración basada en código, mientras que el servicio web es integración basada en mensaje con estándares interoperables que tienen un contrato como WSDL.

Pingala
fuente
No estoy seguro de que su respuesta agregue algo a las respuestas existentes.
andrewsi
3

Piense en el servicio web como una API web. API es un término tan general ahora, por lo que un servicio web es una interfaz de funcionalidad, generalmente relacionada con el negocio, a la que puede acceder desde la red a través de una variedad de protocolos.

Joshua Belden
fuente
1

Mira esto http://en.wikipedia.org/wiki/Web_service

Como se menciona en el enlace, la API web es un desarrollo en los servicios web que probablemente se relacione con la Web 2.0, mientras que los servicios basados ​​en SOAP se reemplazan por comunicaciones basadas en REST. Tenga en cuenta que los servicios REST no requieren definiciones de API de servicio XML, SOAP o WSDL, por lo que esto es muy diferente al servicio web tradicional.

longbkit
fuente
0

otro ejemplo: la API de Google Map vs el servicio web API de dirección de Google, mientras que el primero sirve (entrega) el archivo javascript al sitio (que luego puede usarse como una API para hacer nuevas funciones), el segundo es un servicio web Rest que entrega datos ( en formato json o xml), que puede procesarse (pero no usarse en un sentido de API).

anu
fuente
1
Uhm ... JavaScript puede devolverse como datos y luego usarse como código, esto no es un contraste válido
David C