API vs. Webservice [chiuso]


205

Qual è la differenza tra un servizio web e un'API? La differenza è maggiore del protocollo utilizzato per trasferire i dati? Grazie.


3
Per API, intendi un'API a cui accede HTTP? O semplicemente un'API normale normale?
Pablo Santa Cruz,



Mi sta prendendo in giro. 122 voti positivi e la domanda viene interrotta a causa dei livelli di miscelazione.
Giosuè,

mi hai preso, non sono sicuro del motivo per cui questa domanda è stata chiusa
patatine

Risposte:


173

Un'API (Application Programming Interface) è il mezzo con cui terze parti possono scrivere codice che si interfaccia con altri codici. Un servizio Web è un tipo di API, che funziona quasi sempre su HTTP (anche se alcuni, come SOAP, possono utilizzare trasporti alternativi, come SMTP). La definizione ufficiale di W3C menziona che i servizi Web non usano necessariamente HTTP, ma questo è quasi sempre il caso e di solito si presume se non diversamente indicato.

Per esempi specifici di servizi Web, vedere SOAP , REST e XML-RPC . Per un esempio di un altro tipo di API, uno scritto in C per l'uso su un computer locale, consultare l' API del kernel Linux .

Per quanto riguarda il protocollo, un'API di servizi Web utilizza quasi sempre HTTP (quindi la web part) e implica sicuramente la comunicazione su una rete. Le API in generale possono utilizzare qualsiasi mezzo di comunicazione che desiderano. L'API del kernel Linux, ad esempio, utilizza Interrupts per invocare le chiamate di sistema che comprendono la sua API per le chiamate dallo spazio utente.


8
Considerereste ogni servizio Web come API? Che ne dici di usare AJAX per ricaricare una regione di una pagina web invece di ricaricare l'intera pagina? Non lo vedo necessariamente come API anche se è coinvolto un servizio web. Altrimenti, possiamo ipotizzare che per ogni bit di funzione mai creato, sia esso in una DLL, o JAR, un servizio Web o un codice semplice, siano tutte API. Affinché un'API sia API deve avere in mente sviluppatori di terze parti e l'API non dovrebbe avere alcuna dipendenza con il prodotto finale (l'app che utilizza l'API).
Ronald,

18
Sì, ogni servizio Web è un'API. Sì, un servizio Web AJAX è un'API, non è documentata e quindi non è destinata al consumo pubblico. Non tutte le API sono API progettate per il consumo di terze parti. Puoi avere anche API interne.
Ryan Shillington,

54

Fondamentalmente, un servizio web è un metodo di comunicazione tra due macchine mentre un'API è un livello esposto che consente di programmare qualcosa.

Potresti benissimo avere un'API e il metodo principale per interagire con quell'API è tramite un servizio web.

Le definizioni tecniche (per gentile concessione di Wikipedia) sono:

API

Un'interfaccia di programmazione dell'applicazione (API) è un insieme di routine, strutture di dati, classi di oggetti e / o protocolli forniti da librerie e / o servizi del sistema operativo al fine di supportare la creazione di applicazioni.

Servizio web

Un servizio Web (anche Web Service) è definito dal W3C come "un sistema software progettato per supportare l'interazione interoperabile macchina-macchina su una rete"


4
Sono d'accordo con qualcuno che si oppone alla mia risposta, ma sarei curioso di sapere perché.
Mark Biek,

41
La tua risposta implica che API e servizi Web sono distinti, quando in realtà un servizio Web è un tipo di API. Poiché il punto cruciale di questa domanda è qual è la differenza tra i due, è importante che la risposta chiarisca che i servizi Web sono un tipo di API.
Andrew Cholakian,

3
Interessante. Dovrò (rispettosamente :) non essere d'accordo. Ma apprezzo il feedback.
Mark Biek,

44

In senso generico, un servizio web è un'API su HTTP. Spesso utilizzano JSON o XML, ma ci sono anche altri approcci.


20
Quindi tutti i servizi web sono API ma non tutte le API sono un servizio web?
chips

13
Bene, le API possono essere librerie come DLL, JAR o OCX ecc. Possono anche essere una distribuzione di codice sorgente come l'
APP

10

Le API sono un'interfaccia pubblicata che definisce il modo in cui il componente A comunica con il componente B.

Ad esempio, DoubleClick ha un'API Java pubblicata che consente agli utenti di interrogare le tabelle del database per ottenere informazioni sulla propria campagna pubblicitaria online.

ad es. chiama GetNumberClicks (nome utente)

Per implementare l'API, devi aggiungere il file .jar di DoubleClick al percorso della tua classe. La chiamata è locale.

Un servizio Web è una forma di API in cui l'interfaccia è definita mediante un WSDL. Ciò consente la chiamata remota di un'interfaccia su HTTP.

Se Doubleclick implementasse la propria interfaccia come servizio Web, utilizzerebbe qualcosa come Axis2 in esecuzione all'interno di Tomcat.

L'utente remoto chiamerebbe il servizio web

ad es. chiamare GetNumberClicksWebService (nome utente)

e il servizio GetNumberClicksWebService chiamerebbe GetNumberClicks localmente.


Questa domanda è molto vecchia, ma noterò che questa risposta confonde le API e le interfacce. Un'API è più di un'interfaccia pubblicata (che include elementi come SOAP), è l'interfaccia pubblica per una particolare applicazione o servizio. Sarebbe più preciso dire qualcosa come "Le API sono componenti che hanno un'interfaccia pubblicata con la quale i componenti di terze parti possono interagire con loro".
JDB ricorda ancora Monica il

7

API (Application Programming Interface), il modulo completo stesso suggerisce che si tratta di un'interfaccia che consente di programmare per l'applicazione con l'aiuto o il supporto di qualche altra interfaccia dell'applicazione che espone una sorta di funzionalità che è utile per l'applicazione.

Ad esempio, mostrare i tassi di cambio aggiornati sul tuo sito Web richiederebbe un'interfaccia di terze parti per la programmazione, a meno che tu non preveda di avere il tuo database con tassi di cambio e aggiornamenti regolari allo stesso. Questo set di funzionalità è quando è già disponibile con qualcun altro e quando vogliono condividerlo con gli altri devono avere un endpoint per comunicare con gli altri che sono interessati a tali interazioni in modo da implementarlo sul web tramite web- Servizi. Questo end point non è altro che un'interfaccia della loro applicazione che è possibile programmare da qui API.


4

L'API è l'integrazione basata su codice mentre il servizio Web è l'integrazione basata su messaggi con standard interoperabili che hanno un contratto come WSDL.


Non sono sicuro che la tua risposta aggiunga qualcosa alle risposte esistenti.
Andrewsi,

3

Pensa al servizio Web come api web. L'API è un termine così generale ora, quindi un servizio Web è un'interfaccia per funzionalità, generalmente correlata al business, che puoi accedere alla rete tramite una varietà di protocolli.


1

Controllare questo http://en.wikipedia.org/wiki/Web_service

Come indicato nel link, l'API Web è uno sviluppo nei servizi Web che molto probabilmente si riferisce al Web 2.0, mentre i servizi basati su SOAP sono sostituiti da comunicazioni basate su REST. Si noti che i servizi REST non richiedono definizioni di API di servizio XML, SOAP o WSDL, quindi questo è molto diverso dal servizio Web tradizionale.


0

un altro esempio: google map api vs google direction api web service, mentre il primo serve (consegna) file javascript al sito (che può quindi essere utilizzato come api per creare nuove funzioni), il successivo è un servizio web Rest che fornisce dati ( in formato json o xml), che può essere elaborato (ma non utilizzato in senso API).


1
Uhm ... javascript può essere restituito come dati e quindi usato come codice, questo non è un contrasto valido
David C
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.