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.


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.


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"


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.


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.


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.


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.


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.


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.


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).


1
Uhm ... JavaScript puede devolverse como datos y luego usarse como código, esto no es un contraste válido
David C
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.