Un sito Web dovrebbe utilizzare la propria API pubblica?


31

Sto iniziando a scrivere un servizio Web e ho creato con nodeJS e un approccio RESTfulish.

Da quello che raccolgo:

  • Il vantaggio è che non è necessario duplicare il codice.
  • Gli svantaggi sono che tu:
    • aggiornerà frequentemente l'API pubblica, ma dovrebbe essere risolto con il controllo delle versioni
    • non riesco davvero a rendere la cache e le ottimizzazioni specifiche del servizio

Che cosa è considerata la migliore pratica? Siti come Stack Exchange, Github, Twitter, ecc. Utilizzano le proprie API per i propri clienti?

api 

12
Mangiare il tuo cibo per cani ti spingerà anche a migliorare la tua API pubblica
Ben Brocka,

Ecco come lo fa Amazon.
OliverS

2
Per aggiungere al punto di OlverS, vedi Google Platforms Rant
Brian

Risposte:


37

Dovresti assolutamente usare la tua API. Questo concetto è ampiamente noto come cibo per cani e presenta molti vantaggi oltre a evitare la duplicazione del codice.

  • Comportamento coerente tra il tuo sito / prodotto e ciò che i consumatori dell'API scriveranno (cioè le loro aspettative sull'API)
  • Un'altra forma di test.
  • Puoi e troverai i bug nell'API prima che i tuoi clienti lo facciano, rendendo le loro risoluzioni meno costose.

Anche se avrei argomentare contro uno dei tuoi punti: si dovrebbe non essere aggiornamento frequente l'API. Dedica il tuo tempo all'architetto e prova un'API che rimarrà per un po '. Fortunatamente, il cibo per cani in questo modo lo imporrà. Dove prima avresti appena infranto il codice cliente, adesso infrangerai il tuo codice. Quando è necessario , il controllo delle versioni Sì è una soluzione, ma dovrebbe essere evitato.


0

per qualche motivo non mi permette di accedere come il poster della domanda, ma sono stato io. Non posso accettare la tua risposta, vorrei poterlo fare, ha molto senso.

Tuttavia, come puoi non voler aggiornare la tua API? Che dire di aggiungere nuove funzionalità, rimuovere quelle impopolari, refactoring, ecc.?


Hey. Questo dovrebbe essere un commento sulla sua risposta, ma non credo che tu abbia abbastanza rappresentante per commentare. Comunque, il punto è che non dovresti aggiornare frequentemente l'API . E anche in questo caso, l'aggiunta di nuove funzionalità non è un problema: non può interrompere il codice esistente. Perché rimuovere quelli impopolari? Renderli deprecati e rimuoverli in futuro dopo che le persone hanno avuto molto tempo per rispondere al deprezzamento.
Max

2
L'aggiunta di metodi a un'API va bene, la modifica di un'API esistente è dannosa perché interromperà qualsiasi codice che dipende dall'API.
Bryan Oakley,

@ stanm87: Max e Bryan lo hanno detto bene. Dovresti evitare di modificare il contratto della tua API (ovvero l'interfaccia e il comportamento, il funzionamento, il previsto). Le persone dipenderanno da questo se useranno la tua API e se la cambi, romperà il loro codice.
Steven Evers,

grazie mille per il chiarimento. @Max In effetti non posso commentare la sua risposta
stanm87,
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.