Press "Enter" to skip to content

GOTO 2015 • Web APIs that Developers Love • Kai Spichale


il mio nome è cash bacala e vorrei
per darti il benvenuto ai miei discorsi sull’API Web
che gli sviluppatori ridono di chi hai avuto
avevo ascoltato la conversazione prima
va bene, è molto buono perché
in realtà non ho parlato con Oliver
prima ma per fortuna non condividiamo
molto nella nostra presentazione così alla fine
ci sono stati alcuni domanda che voglio io
coprire così è molto buono lo so
conosci già l’Occidente e ci sono
sono stati migliaia di discorsi e
presentazioni a riguardo, quindi non essere
ho paura che non copro che non lo farò
spiegare le basi di riposo e HTTP
e non ti darò fastidio con la base
differenza tra procedura remota
carte e come usare correttamente le risorse
ci sono un sacco di pratiche di stampa
ci sono ben noti d’accordo ma io
li salterò oggi non perché loro
non sono importanti solo per
solo 45 minuti e mi piacerebbe
concentrarsi su altri aspetti che sono
anche importante e, si spera, interessante
per te ho deciso di fare questo discorso
questo è ovviamente questo titolo
accattivante ma penso che sia anche adeguato
perché è quello che è l’ api
devono essere ottimizzati per gli sviluppatori
non per macchine e questa prospettiva è
molto importante e mi piacerebbe iniziare
spiegando questo braccio ad un livello molto alto
tu hai questo braccio che abbiamo il
scenario c’è un client che usa il
implementazione di un componente o servizio
ed è fatto
l’API questo è il visibile esterno
operazioni con input e output e
questo è il tipo di contratto che è
fatto tra declinato e il componente
o quel servizio è chiaro, penso di si
e ovviamente non c’è un contratto
essere declinati e l’implementazione
che ci porta il disaccoppiamento dal
implementazione in modo da poter essere modificata
o potrebbe aver completato un mazzo di differenze
e c’è un’altra funzione di braccio che è
integrazione e riutilizzo perché quell’API
questo è il client che sta usando
ottimizzato per questo scopo è
ottimizzato per l’integrazione e riutilizzarlo
significa che abbiamo una qualità diversa
attributi per API e il nostro
implementazione l’AP l’ implementazione
è probabilmente ottimizzato per le prestazioni
per la testabilità di manutenibilità e così via
molti altri attributi di qualità ma API
questo è qualcos’altro dovrebbe essere facile
per capire facile da usare facile da imparare
e molti altri attributi simili quindi
quindi c’è un’altra funzione
a volte è dimenticato o non è quello
ovvio e questa è comunicazione tra
sviluppatori perché ogni volta che c’è un
pezzo di codice che dovrebbe essere riutilizzato da
un’altra squadra o da un altro sviluppatore e
gli sviluppatori originali non intendono farlo
chiedi e spiega come potrebbe essere usato
c’è un problema di comunicazione e di
Naturalmente la soluzione è l’API stessa così
l’API diventa un canale di comunicazione
ed è per questo che dobbiamo ottimizzare le API
per questo per questo scopo, quindi l’ api è di nuovo
sono destinati agli sviluppatori non per
macchine è per le persone se lo sei
utilizzando nel web o sul web su
HTTP standard se si è conformi al
principi di riposo aiuta molto ma io
penso sia anche importante fornire
documentazione che è accurata
cioè ha abbastanza informazioni
porta esempi perché di solito
gli sviluppatori imparano molto bene questi esempi
ma non voglio sottolineare questo di più
di questo vorrei prendere questo
prospettiva dello sviluppatore e vieni al
prossimo argomento che è UI design Oliver
prima parlava del dominio di rendering
design guidato e come questo può essere usato
per identificare le risorse e le loro
aggrega gli aggregati di root questo è un
argomento completamente diverso mi concentro
ora sul design dell’interfaccia utente che è anche molto
importante per la progettazione delle API Web di web api
e non sto dicendo riposo quindi sono
dire più api generale è così l’interfaccia utente yoga è
ovviamente un identificativo univoco per
risorsa lo sai e hai un
esempio che è possibile vedere che sì
risponde 42 e sono sicuro che tu sai quale
rispondo, intendo che è la risposta alla vita
l’universo e tutto così così
ci porta a questo libro di braccio ma sul
dall’altra parte una cosa del genere potrei essere molto
criptico e come la stessa funzione
identifica in modo univoco una risorsa quale
è meglio dipende dal braccio del caso d’uso
questo è leggibile noi abbiamo un intuito
capendo che questo libro o questo
risposta su questo è scritto in questo
il libro è nuovo e questo è molto criptico
non ho idea di cosa sia forse per a
macchina ha senso ma non per a
lettore umano comunque il cliente
non dovrebbe mai creare i collegamenti da solo
questo è un compito per il server del server
fornisce collegamenti questo è un concetto di base
di ipermedia e spogliati quando guardiamo
a braccio questo esempio è più jason
sorprendente documento JSON con una serie di
link in questo caso è solo un link
dentro e c’è un iper riferimento
relazione e matematica
il metodo è ovviamente questo è il
Operazione HDP utilizzata per chiamarla
link c’è una relazione che spiega
la semantica è una lunga lista di
tipi di relazioni standard che dovrebbero essere
riutilizzato il più possibile se ciò non è sufficiente
puoi definire il tuo e devi
definisci che questo è parte dell’API
contratto e c’è questo iper
fai riferimento a questa interfaccia utente così e senza saperlo
nulla di questa API possiamo vedere che è
API da un giornale ed è un discorso sul peccato
installazione è la versione 1 e qui è a
pagamento e c’è questo braccio è
ovviamente un ID perché inizia con
paga meno 2x e così via quindi questo ovviamente
identifica un pagamento unico e questo e
forse altre risorse sono messe insieme
in questo gruppo di altre risorse quello
sono chiamati pagamenti così senza nessuno
documentazione senza sapere nulla
su questa API vediamo solo questo link e
possiamo guidare un trigonale a comprenderlo
è destinato ad essere utilizzato da un cliente I
significare una macchina in questo caso, ma allo
iniziando se vogliamo imparare e
esplorare questa API aiuta molto
quando possiamo leggere l’interfaccia utente così e poi
di nuovo qual è la domanda la domanda
dovremmo preoccuparci del tuo design degli occhi no
da un punto di puro riposo non lo è
necessario ora i collegamenti gli occhi sono
purché li usiamo solo ma poi di nuovo
perché no non c’è contraddizione ci sono
molte API che non sono veramente riposanti
e leggibili i tuoi occhi ci aiutano molto
aiutaci come sviluppatori a capire e
usa l’API quali sono i vantaggi di
il tuo occhio ben progettato possiamo leggere il nostro DUI
e indovina di cosa tratta la natura
questo quando guardiamo questo vediamo che è
parte dell’API di Github contiene un rizal
resort di raccolta chiamato utenti e questo
è probabilmente il nome o l’idea di a
utente specifico e i suoi seguaci
salsa di supporto e ora possiamo leggerlo
questo sei identifica i seguaci di
umore del modo utente jumbo quindi è molto
facile renderlo leggibile è Ecuba
non è necessario per il riposo ma aiuta a
molto perché se rimuoviamo questo personaggio
più confusi seguici possiamo andare
direttamente agli utenti e ci aspettiamo di ottenere un
elenco di utenti che è effettivamente un caso
oppure possiamo navigare direttamente a causa di
un altro utente sostituendo un jumbo
c’è un altro ID e funziona così
è molto bello conoscere una API per
sperimentare con esso e per imparare
e, naturalmente, il tuo disegno corretto aiuta
noi per fare collegamenti stabili o i tuoi occhi vanno
collegamenti di programma ampi o bianchi rotti
segnalibri e se c’è davvero un bene
motivo per rimuovere o spostare i nostri collegamenti
o risorse allora dovresti rispondere a questo
con un codice di stato adeguato per di più
riguardo ai tuoi occhi ho detto che dovrebbe esserci
leggibili e diventano molto leggibili
quando sono lì, naturalmente
dovrebbe essere uno scatto il più possibile ma non
più corto significa usare l’abbreviazione
potrebbe essere controproducente, quindi non farlo
li accorciano come dovrebbero essere
modelli di identificazione coerenti che tu
voglio usare identifamy per identificare i nomi
e attenersi a loro non utilizzare sinonimi per
lo stesso concetto che quando quando è
non necessario e il lato per caso e
attenersi ad esso sono in genere nomi plurali
è usato e raccomandato rigoroso minuscolo
il mio preferito e se usi rigorosamente inferiore
caso non puoi più usare sostanze chimiche
ma a volte è necessario
una specie di forza separatrice diversa
parole per renderlo più leggibile che semplicemente
usa il trattino perché c’è l’impostazione del braccio
il problema con i trattini in urs cosa c’è
sul lato delle terminazioni di file li troviamo
in internet c’è molto per
istanza e questo è quasi uno scherzo
questo sei o questa UI identifica il
dissertazione dal Royal Fielding che
scrisse inizialmente sul riposo e, naturalmente
questo ha dovuto avere una sorta di finale di fuoco
perché è un cerchiamo di trovare un’app web ma
in realtà non c’è un vero tecnico
motivo per quello ma poi di nuovo lo sono
anche api abbastanza moderne abbiamo seedpeer
deedee trotter api e di nuovo uso
soy sfidano i guadagni, sono sicuro che lo sappiano
quello che hanno fatto si spera, ma c’è un
buona ragione penso che siano stati molto
praticamente perché loro capiscono a
supporto solo JSON e XML e non c’è
nessuna negoziazione del contenuto solo JSON e XML
quindi se sostituiamo questo jason discendente
con xml otteniamo un’altra rappresentazione
di quell’utente e questo potrebbe essere questo
non è carino questo non è riposo ma è
pratico perché um se lo metti a
URI in una e -mail e inviarlo a
collega otterrà lo stesso
rappresentazione lo stesso oggetto senza
eventuali altre intestazioni aggiuntive e così via
quindi questo è pratico di cosa si tratta
trailing slash um c’è un c’è un
somiglianza nella semantica tra il
Percorsi di file UNIX e il braccio dell’interfaccia utente, se lo sono
non sbaglio questo identifica l’UNIX
file e se uso un allenamento / ho un
directory destra
lo stesso dovrebbe essere vero per te è ma
diamo un’occhiata a questo prima di tutto che abbiamo
di nuovo i nostri libri e noi siamo a
collezione di libri perché questo
identifica un elenco di libri e lo fa
senso di usare una barra finale perché
è simile alla directory perché è un
raccolta di più cose va bene funziona
se identificate un singolo libro non abbiamo
barra finale perché è un singolo libro
e abbiamo un singolo file senza
le stringhe hanno senso in un modo ma
poi di nuovo quello che ora potrebbe fare questo libro
avere capitoli e i capitoli potrebbero
avere un singolo capitolo, quindi questo è ovvio
problema e quindi mi consiglia di utilizzare
nessuna barra finale dovrebbe essere coerente
e usali proprio dove sono
necessario separare queste parti
ma non alla fine è molto facile
un’altra cosa sulle barre finali
a volte lo trovi in un’API ipermedia a
tipo di risorsa directory che è il
la prima risorsa nel tuo braccio
io allora fornisco i primi link
studiare la navigazione per iniziare a
conversazione con te io e se lo fai
questo cerca di evitare di fare ciò che ho fatto
questo errore una volta ed è per questo che io
creato la diapositiva non ricordo che siamo
spostando la barra finale cosa c’è
sui rapporti questi sono anche importanti
per una corretta progettazione dell’interfaccia utente
di solito sul design dell’interfaccia utente UI segue questo
modello che è un hora cool ed è
molto semplice ed efficace iniziamo con
collezione e oggetto assassino c’è a
sotto raccolta di sottovoci e loro
potrebbe probabilmente una sotto raccolta secondaria con
i sottotitoli sono piloti e così via, quindi è molto
utile per modellare uno a uno e uno anche
molte relazioni e potremmo creare aa
persona che fa parte di questo gruppo che possiamo
ottenere più tardi la singola persona nuova e noi
puoi eliminarlo in modo che funzioni molto facilmente ma
che cosa è circa n2m relazione o
relazioni molti-a-molti in questo caso noi
avere un gruppo che ne ha zero uno o più
persone e ancora la persona ha zero
uno o più gruppi potremmo usare lo stesso
approccio, per esempio, metto questo
array nel mio gruppo e qui identifico
l’sono le persone sono che fanno parte del
questo gruppo in realtà dovrebbe essere g1
scusa e dall’altra parte nel
persona identifico i gruppi che il
la persona fa parte di così ma ora ho a
problema sulla caching quando cambio
questo potrebbe essere ancora in contanti
in modo che non funzioni molto bene e il
altra domanda è quale di quale uno di
entrambi stanno conducendo forse devo aggiornare
dopo l’aggiornamento entrambi, ma questo non sarebbe
un’operazione atomica quando devo
cambiare entrambi in un modo migliore, naturalmente
e questo è fatto con abbonamenti così
creiamo una risorsa braccio separata in
in questo caso lo chiamerò abbonamento e
questa iscrizione ottiene l’ID della persona e
l’ID del gruppo e poi posso facilmente
creare ottenere ed eliminare questa appartenenza a
capo
rimuovi una persona da raggruppare in modo corretto, quindi la memorizzazione nella cache
funziona perché ne ho solo uno unico
identificatore per questa risorsa che posso
crea cancellalo con una causa così otama
Il CD è che funzionava e posso anche farlo
metti qui altre proprietà che io
non potevo fare nella precedente
approccio a questo esempio che ho usato
già qui e qui e qui prefissi
e penso che sia una buona idea
usali per l’ agente di braccio ID 007, naturalmente
è leggibile ma forse è meglio questo
uno con il prefisso o se si dispone di a
persona e questo ha questo in modo enigmatico
ID puoi avere un prefisso per renderlo più
ancora leggibile mi raccomando di usare rigorosamente
minuscole e trattini questo è anche fatto
da Gina che sono sicuro che tutti voi conoscete
anche avere un prefisso in questo caso non lo è
minuscolo ma è molto utile questo
modo perché vedi a quale nostro progetto
questo biglietto appartiene ed è anche questo
altri vantaggi che voglio spiegare
perché questo ID è un ID sequenziale
inizia con uno e continua se tu
creare un nuovo biglietto, quindi avremmo ottenuto
cinquecento e diciassette diciotto e
così via e questo rende questa UI probabile
in questo caso è un vantaggio perché
sappiamo quando vediamo questa interfaccia utente lì
ne sono altri cinquecentoquindici
biglietti e possono usare questo
informazioni per navigare verso un altro
biglietto ovviamente lo fai ogni volta
ogni giorno sono sicuro che sia così
pratico e l’interfaccia utente nel nostro web
il browser diventa diventa o diventa parte di
l’interfaccia utente che usiamo tutti i giorni che è anche
hackerabile perché possiamo usarlo per
navigazione che possiamo
pone il 516 c’è un altro numero e
vai direttamente al biglietto così e questo è
possibile attraverso questo corretto design dell’interfaccia utente I
detto questo è un vantaggio ma lo sono
altri casi d’uso in cui non sono affittato
questo braccio app super cool non esiste
questo proprio per questo questa spiegazione così
abbiamo qui o API del nostro super cool
app e c’è la risorsa degli utenti
ed ecco il perché di questo molto specifico
utente in questo caso immagino che ci siano
solo trecentotredici
utenti e questo è uno svantaggio perché
Ho iniziato a utilizzare questa API con cui
Pensavo fosse fantastico e poi lo farò
vedi che ce ne sono solo trecento
e quattordici altri utenti ci ho pensato
erano milioni quindi è ovviamente un
svantaggio e Hecuba è in questo caso
anche svantaggio perché posso andare avanti
ad altri ID utente e questo potrebbe essere un
potenziale problema di sicurezza uno in meno
a volte è una buona idea lavorare
con sequenziale a volte no
tuttavia non usare mai a
relazione uno-a-uno tra il tuo
la chiave di database e il tuo ID pubblico lo sono anche
anche qui che sembra davvero un
sequenziale come una sequenza di basi di dati
non c’è una differenza ok
il prossimo argomento riguarda lo stack overflow degli ID
Sono sicuro che lo sai anche lui è un tipo
di risorse chiamate domande e questo è
seguito da un ID che identifica un
domanda singola e questa è l’unica
parte di questa interfaccia utente e questo gioco al
fine questo è l’allentamento dell’allenamento
no ed è creato dalla domanda
che l’utente ha chiesto e di nuovo loro
segui il braccio che usano sostantivi provati
usano rigorosamente minuscole e usano
trattini che è molto buono e questo
è creato dal titolo o dalla domanda
che hai appena chiesto e ora possiamo leggere
e capire questa risorsa prima di noi
vai da quella parte e leggi, quindi è a
tipo di chiave naturale e ci aiuta a
ottimizzare la nostra esperienza di ricerca perché
quando vediamo i risultati nella nostra ricerca
sono quindi possiamo decidere se vuoi andare
lì o non tutto bene è tutto ciò che ho
per dire per UI UI progettare il prossimo argomento I
voglio indirizzare le nostre risposte parziali
la prima tecnica che è ben nota è
paging se hai una lista e non lo fai
sapere quanto è in realtà o è
solo troppi dati per caricarlo
con una chiamata usa il cercapersone che conosci
inizia a dire ottieni la pagina dei prodotti
contare cinque questo è il numero massimo di
articoli che vuoi ricevere e forse
si dispone di alcune altre proprietà che che
dovuto identificare l’ordine corretto e
la seconda pagina è come la prima
proprio qui pagina due quindi è molto facile come
un’alternativa è possibile utilizzare il collegamento bagnato
che proviene dall’esperienza utente di
lo sviluppatore sperimenta un po ‘
più facile e pratico quindi nella nostra gamma di
collegamenti forniamo un collegamento armato al
pagina precedente alla pagina che era
attualmente caricato che era la seconda pagina in
questo caso alla pagina successiva, quindi non lo facciamo
necessario creare questo link ci siamo
basta usare questo link ma potremmo anche andare
direttamente al primo ritmo o al grande
c’è l’ultimo quindi ci sono
cose diverse possibili con a
battendo le palpebre questo è il supporto
paging ma cosa si tratta di flussi di
dati e di solito abbiamo flussi di dati
e quest’anno te lo mostrerò
paging non è l’ idea migliore perché
di nuovo iniziamo a leggere il
prima pagina pagina uno conta cinque e poi
abbiamo scritto i messaggi da sei a
dieci che è ciò che rende ciò che abbiamo
atteso ma nel frattempo agli altri
nuovi messaggi sono stati aggiunti se ora
voglio leggere il prossimo cinque d quest’anno
e con basta dire la pagina per contare cinque
questo non funzionerà perché il sottoinsieme
che vogliamo leggere è calcolato da
il massimo quindi prendiamo sette e sei
di nuovo quindi non è molto buono per i dati o
lista di dati che cambia rapidamente come un
alternativa puoi usare l’anello del cursore quando
si inizia a cancellare basta specificare il
la quantità di elementi che vuoi leggere andiamo
di nuovo il numero cinque e questo è davvero
quello che otteniamo il messaggio è da sei a
dieci nel frattempo ne fanno due nuovi
messaggi che modifica e quindi per leggere il
prossima pagina al prossimo, mi dispiace andare
giù andando giù con il nostro andare al cursore
leggere questi specifichiamo di nuovo il numero cinque
e l’ID massimo l’ID massimo è l’ ID perso
ci dirigiamo da questa lettura che qui noi
avere ID sei e sei metri uno
cinque se il nostro cliente non è in grado di nostro
calcolando questo ID potremmo fornire un
link o potremmo definire la semantica
diversamente potremmo dire arm è il
max ID è esclusivo del nostro cliente
potrebbe usare il più piccolo ID o che lui
sa, ma il collegamento sarebbe un migliore
approccio per aiutarli ad attraversare
questo flusso di dati
quindi ora abbiamo scritto che abbiamo
scritto le prime dieci pagine ma in
nel frattempo un sacco di altri messaggi hanno
stato aggiunto come possiamo leggerli di nuovo noi
puoi leggere con il conto cinque e iniziare da
la parte superiore e ad una vasta lettura del
messaggi qui di nuovo specificiamo a
nuovo parametro che viene chiamato da I t10
questo dice che vogliamo fermarci qui
vogliamo che non vogliamo leggerli di nuovo così
eccoci e finalmente a leggere questi noi
usa tutti insieme conta cinque da quando t10
e Max ID 13 e otteniamo solo esattamente
questi tre messaggi mancanti così maledettamente
la copertura è una buona alternativa per
braccio di lancio in realtà dovrebbe essere usato
ogni volta che non vedo il vantaggio di
paging Vorrei raccomandare l’uso di crossing
ogni volta che c’è un altro modo per
per lavorare con dati parziali o o
caricamento solo sottoinsieme dei dati che è
parte di un aggregato su percorso aggregato
e questo è incorporare e collegare questo
piccoli esempi basati sulla sirena è a
hover media format e questo non è un
Completa il documento della sirena che ti ho appena mostrato
i due collegamenti per cui sono importanti
questo per questo esempio c’è il sé
link che identifica questi documenti
stesso e c’è un altro link chiamato
autore che è una relazione definita dall’utente
tipo e questo ci porta all’autore di
questo libro quindi questi dati non sono inclusi
direttamente all’interno di questo documento ma lo è
collegato e possiamo ora andare al sub
entità e caricarlo se non è necessario
questo è un tipo di caricamento pigro che andiamo e
leggi questi dati solo se è davvero bello
scusa e non è direttamente aggiunta
il documento che rende il documento a
molto più piccolo ma il mio titolo dice
incorporare Russ è anche il collegamento
possibile la sirena per incorporare i dati
direttamente e questo è mostrato qui arm qui
è il collegamento ma è anche incorporato
direttamente così il cliente riceve i dati
direttamente senza una chiamata aggiuntiva ma
c’è questo è molto utile ma c’è
uno svantaggio perché il cliente
non posso decidere se è incorporato o se
è solo collegato il cliente deve lavorare
con entrambe le possibilità e quindi io
vorrei parlare di graph q air
questo aiuta a selezionare solo il braccio specifico
campi di dati che si desidera avere
grafico dove non è molto utile
costruisci un api riposante in realtà quando tu
usalo o molte API che usa no
riposante ma in realtà è molto
utile e diamo un’occhiata okay
graficamente che era originariamente
sviluppato da Facebook e c’è un
implementazione di riferimento in JavaScript
e ci sono altri open source
implementazioni per Java e Python come
bene e altre lingue forse e il
l’intera idea è creare una query che sia
inviato come una stringa al server
supporta questa API e quindi krory
esprime in dettaglio quali campi sono
richiesto dal cliente e basato sul
quadrato e viene creata la rappresentazione
e rispedito e tutto ciò che è stato fatto
un sistema di tipo forte che supporta anche
introspezione diamo un’occhiata a questo
primo esempio facile vuole avere il
autore Douglas Adams, così lo creiamo
curry di stenografia che non ha nome
e l’ unico campo che vogliamo avere è
nome e poi come recita otteniamo solo
questo autore con il nome niente di più
perché questa è l’ unica cosa che noi
voglio avere così è possibile definire
un insieme di campi con il nome dell’ID ultimo
nome posso anche usare dati più complessi
e nidificare questi campi e come ho fatto io
ho mostrato prima che sia anche possibile
utilizzare queste funzioni definite dall’utente lasciare
questo ID libro funzione e immagine di copertina
Cézanne’s oh questo è questo è parte di
lo schema che è definito prima
fa parte dell’API di creazione artigianale
un’altra testa piena funzione di noi artigianali
sono frammenti in modo da poter esternare
alcune definizioni e riutilizzarle di nuovo in
inchiesta quindi questa query si chiama libro
krory quindi questo è solo il nome e
all’interno uso questa funzione definita dall’utente
libro e dentro specifichi i campi I
voglio avere con quel frammento e
questi tre punti sono in realtà come
operatore questo è il cosiddetto spread
operato per includere i frammenti, quindi se ho
ti ha mostrato esempi per leggere i dati ma è così
anche possibile cambiare i dati questo è
fatto questa mutazione questa mutazione
le mutazioni sono post centrali e il
gli altri a leggere i dati sono fondamentali per ottenere
a questa mutazione piace un libro che significa
il numero di like è aumentato di uno
e penso che il suo eps autoesplicativo fosse
capisci cosa sta succedendo ero finito
identificato il libro 42 e poi il
contatore nero viene incrementato e come
risultato ottengo dati indietro e questo è il
prenota con nome e il mio conteggio
ok ci sono altri molto
caratteristiche interessanti ma prima che io possa o
voglio spiegarli dopo questo
esempio che motiva e rende di più
più comprensibile quindi cosa succede se
la nostra API cambia al momento, se ce l’abbiamo
questa struttura leggiamo i nostri libri 42 e
questa è la rappresentazione di Jason
ha un ID e stringere e prezzo e ora
il nostro business scopre che questo prezzo
non è abbastanza preciso e vuole avere
prezzo del portale e della rete
Certo un cambio di rottura perché il
altri clienti esistenti possono contare su
il prezzo del campo e questo è stato rimosso
quindi è meglio lasciarlo dentro e
aggiungi gli altri ma questo potrebbe anche ferire
clienti esistenti perché un vecchio client
potrebbe non essere compatibile con il futuro potrebbe
non può gestire queste incognite perché
questi sono nuovi e non conosciuti per esistere
clienti quindi quindi potremmo usare il
grafico ql introspection API e il
il cliente può creare questa query su on
questo libro questo crore si chiama libro
Ispezione questo è solo il nome di
il mio esempio e tu usi un built-in
funzione che si chiama type e vogliamo
avere il tipo di informazione del
digitare il libro quando ho il nome e alcuni
informazioni sui campi una lista
dei campi che vuoi includere tutti
quelli deprecati con nome il
informazioni se è deprecato o meno
e una ragione a parte un’altra abbiamo questo
otteniamo il tipo di informazioni del nostro
prenota qui c’è una lista di una serie di campi
il primo campo è l’ID che non lo è
deprecato ma il nostro prezzo è deprecato
questo ci dà un mezzo per i nostri clienti
chiedi alla nostra API se i campi ricchi sono nuovi se
ci sono nuovi campi aggiunti se ce ne sono
altri campi che sono deprecati quindi questo
è un modo molto carino per informare i nostri clienti
che qualcosa è cambiato così vecchio
il cliente potrebbe continuare a usare questo curry
perché vuoi avere il prezzo del titolo dell’ID
nient’altro e il nuovo cliente potrebbe
usa mettere un prezzo perché il prezzo è
duplicato il nostro server lo sa anche da
richiede che riceva quali campi
sono effettivamente necessari e se non c’è
più clienti rimasti che usano il prezzo di noi
in realtà tutti alla fine potrebbero rimuovere
questo campo senza rompere alcun esistente
client quindi è molto buono per le estensioni
che sono compatibili e vorrei
continua con questo argomento e parla
razionamento perché questo è fatto di solito
sbagliato e vorrebbe iniziare con il
distinzione con il fare la differenza
tra versioning dei dati e lingua
il braccio di versionamento dei dati di versione si verifica
perché una risorsa può avere nel tempo
diversi stati, naturalmente, i dati possono
può cambiare e indipendentemente da quanto spesso questo
i dati sono cambiati il ​​significato rimane il
lo stesso per cui i clienti esistenti non sono feriti da
lo stato cambia ma poi di nuovo lo sono
cambiamenti di lingua e quando una lingua è
cambiato o esteso questo stato rimane
lo stesso ma i dati sono rappresentati in
in un modo diverso e se dovessi usare
versioning della lingua o estensione inglese
come regola numero uno prova a farlo a
uso compatibile con le versioni precedenti e / o successive
la versione ci identifica come a
deve ricorrere a denotare incompatibile
cambia così indietro e avanti
la compatibilità è molto importante all’indietro
compatibilità compat è ad esempio se
la nostra nuova porta USB supporta l’ altare a
punta o stick quindi possiamo dire questo USB
la porta è compatibile con le versioni precedenti e c’è
anche in avanti questa è la compatibilità
caso in cui il nostro vecchio pensiero sostiene il
anche i nuovi bastoncini quindi questa parte è
avanti compatibile ma vedi che possiamo
guarda avanti e indietro
compatibilità da due punti di vista
c’è una prospettiva del porto e
il messaggio di errore e lo stesso vale per
agenti e server di origine così e per
parlare di ho creato questo piccolo
riassunto e vorrei parlare di
più su consumatori e produttori e
la loro compatibilità potrebbe essere un consumatore
compatibile con le versioni precedenti questo è il caso
quando un nuovo cliente riceve una risposta
da un server più vecchio di solito il più recente
il client cerca l’ identificativo della versione
e si comporta correttamente armata la versione
potrebbe essere codificato in due nella domanda
tempo o come parametro del tempo della domanda
potrebbe essere codificato direttamente nell’URL
ma anche direttamente dentro
rappresentazione quando si tratta di un documento XML
um potremmo usare i nostri spazi per i nomi sul
lato server possiamo anche supportare il passato
compatibilità e questo è il caso in cui
un server più recente ottiene un modulo di richiesta a
vecchio cliente e solitamente usiamo a
sostituzione o sostituzione affiancata
significa che il nostro vecchio server esistente
completamente sostituito da uno nuovo e il
il nuovo parla entrambe le lingue del vecchio
e la nuova API side-by-side significa vecchia a
i nuovi server sono distribuiti fianco a fianco e
forse lì usano diversi tipi di mamma
o diversi i tuoi occhi e c’è un
Gateway API davanti a loro e il
spedire al server bianco il vecchio
o il nuovo è fatto dietro le quinte
è anche importante avere la versione
notifiche perché l’esistente
i clienti devono essere informati che lì
è una nuova versione disponibile questo è
di solito fatto fuori banda con e-mail
attraverso la documentazione o la newsletter
a volte i collegamenti possono essere usati ma spesso
è fuori dal gruppo e che dire di forward
compatibilità se il consumatore è o
il client è compatibile in avanti questo è
il caso quando un vecchio cliente invia
o riceve un vecchio cliente riceve risposta
da un nuovo server più recente e se questo
è il caso che questo vecchio client deve accettare
incognite ricordo che questo esempio era il
prezzo e il proto un’impresa e
il vecchio client riceve improvvisamente nuovi campi
e deve lavorare con quello e questi
le incognite devono essere preservate se c’è
per esempio una lunga conversazione tra
client e server e c’è il documento
che viene inviato avanti e indietro tra il
client e server ovviamente il client
non deve buttare via le incognite che deve
essere conservato e necessario è anche un
versione identifica un modello di sostituzione
che definisce come interpreta il cliente
l’identificatore della versione dato perché
sono algoritmi diversi possibili
l’identificativo della versione potrebbe significare questo
questa è l’ultima versione che il
server supporta o potrebbe essere il
versione minima che è necessaria
supporta tutte le funzionalità richieste così là
sono diverse semantiche di identificatori
questo deve essere chiaro
e infine ultimo ma non meno importante il
produttore questo server potrebbe anche essere
avanti compatibile e questo è definito
nelle specifiche dei media se c’è un c’è
anche un che deve accettare richieste da
Linee di New York quindi l’API che questo
gli attrezzi del server devono definire dove
e come questa estensione potrebbe accadere così
ci devono essere chiare aspettative da trovare
e quindi se costruisci il server e noi
dire che il futuro cliente può inviare dati extra in
questi campi o puoi usare questo nostro
legami di estensione quindi questo è possibile
più tardi per i tuoi clienti e
l’incompatibilità è identificata da
controllando l’identificatore di versione e su
dalla parte dei produttori possiamo avere un lato
lato con entrambe le installazioni o a
rompere la sostituzione quindi è molto difficile
argomento è per questo che ho messo anche dentro
tutti anche aggiunti qui questi questi
riferimento quando hai guidato un pochino
più tempo puoi dare un’occhiata al nostro
maneggiando penso di avere qualche minuto
va bene, non è tanto il nostro modo di gestire è nostro
ultimo argomento voglio parlare a parte è
molto importante fornire un’API che sia
facilmente utilizzato ha un buon utente
esperienza perché da un utente o
la prospettiva e l’API degli sviluppatori è giusta
scatola nera se qualcosa va storto e
non c’è una risposta utile significativa allora
il nostro sviluppatore o il nostro cliente no
sapere che cosa è successo e come si può
risolvi che così tanto tempo è sprecato e
forse decide di andare su un’altra API
questo fa meglio questi problemi comuni
di solito stanno scavando persino errori
attraverso 200 ok o
usando per ogni problema 500 e dicendo
errore interno del server e niente di più
quindi questo è entrambi non molto utili
sapendo che qualcosa è andato storto
non non mi ha colpito in modo ci deve
essere ulteriori informazioni fornite da HTTP
un sacco di codice di stato sono interessante
per noi sono i codici 400 e 500 per
le ore client e server più
i commenti sono questo sono sicuro che lo sai
loro ma voglio dire una cosa
il 400 è possibile utilizzare questo codice di stato se
per esempio tu sei JSON o XML
documento che il cliente ti invia è
rotto non è rilevante non puoi passare
allora è una buona idea usare 400 male
richiesta perché non è ben formato
non posso leggerlo se comunque l’ XML o
adiacente come ben formato ma è
Sbagliato semanticamente allora potresti
probabilmente usa 422 che dice che il
l’entità non è processabile questo è un
estensione in realtà essere ma è di più
specifico quindi raccomando di usare 422 quando
è forse meglio di 400 400 4 e 10
3 Penso allo sconosciuto che non devo
spiegarlo sul lato server c’è
500 come la spiegazione generale che
qualcosa è andato storto e 503 e cinque
e quattro sono usati spesso 500 per questo
forse non è normale, questo è quando Wendy
questo è il gate racer o il server web
usato come spalancato come gateway o come proxy
non ha una risposta dal monte
server, quindi puoi usare 405 ma comunque
quello che voglio dirti è se
un problema e usa 500 che non è abbastanza
devi essere più specifico di questo
e diamo un’occhiata a come habla come
le altre API sconosciute fanno questo
ecco un esempio dall’API di Twitter
il commutatore AP è nostro uso un array di
le frecce in questo caso ne hai solo una
ora dentro e ha un messaggio e il
codice e il messaggio è per noi
sviluppatori e ci dice cosa ha
successo in questo caso abbiamo detto
mi dispiace che la pagina non esiste e
c’è un codice che è inteso più per
macchine e possiamo cercare nel nostro
documentazione e vedere quella lettera
corrisponde a HTTP 404 che è
corretto e spesso c’è spiegazione o
qual è stata la ragione, quindi è una buona idea
per segnalare l’errore con appropriato
Codice di stato HTTP e inoltre fornire
informazioni aggiuntive questo con questi
tipo di messaggi questo è anche fatto da
l’ API Trillia e fanno un po ‘
più di questo hanno ovviamente il
il messaggio che legge non è un numero due
è specificato che questo parametro è
manca c’è un codice e poi c’è
anche un link e questo link possono essere utilizzati
trovare molto velocemente molto utile il
spiegazione quindi andiamo a questa interfaccia utente e vediamo
ecco la nostra freccia ed ecco anche un
spiegazione che ci aiuta ad evitare
questo errore quindi torniamo di nuovo per a
la testa per i nostri messaggi usa la destra
statuscode usa proprietà aggiuntive
il nostro codice per essere più specifici per essere di più
concentrato sul tuo problema aziendale
e se è possibile fornire un link in
a te direttamente la tua documentazione quindi
che l’utente o la configurazione dello sviluppatore è stata impostata correttamente
molto rapidamente ok e ora abbiamo tempo
per alcune domande

Please follow and like us: