Come chiamare un'API HTTP che non è RESTful? [chiuso]


24

Come chiameresti un'API basata su HTTP, che utilizza l'URI per nominare risorse e verbi HTTP (PUT, POST, DELETE, GET ...) per manipolare tali risorse?

Secondo le lamentele di Roy Fielding non è REST, perché non esiste un ipermediale.

Internamente, nel mio team, tutti lo chiamano "API REST". Lo chiamo "REST-like" ma non è descrittivo e il suo significato è confuso. Sono piuttosto confuso al riguardo, dal momento che esiste un grande disaccordo su REST. Non voglio prendere parte alle guerre di fiamma, ma uso solo termini corretti.


6
Quanto tempo al lavoro dedichi realmente alla programmazione e quanto tempo impieghi a decidere quale terminologia utilizzare? Supponiamo di rilasciare un ottimo prodotto ma hai usato una terminologia leggermente errata in alcuni documenti interni. Ai tuoi clienti importa?
Brandin,

3
Come lo chiami e come lo chiami sono due cose diverse.
JeffO,

13
Questa domanda merita davvero lo snark e lo scetticismo che sta ottenendo nei commenti? Non sembra esagerato desiderare un modo decente e ampiamente compreso di riferirsi a un concetto piuttosto di alto livello e di uso frequente.
Ben Aaronson,

6
@Brandin, le parole significano cose. Fino a quando non riesco ad agganciare una chiavetta USB al tuo cervello e a scaricare immediatamente il mio codice, dovrò usare etichette e terminologia per comunicare il mio significato. Se dico "API HTTP SOAP", ciò significherà qualcosa di significativamente diverso da "API HTTP REST". Nominare le cose è un problema difficile, e anche importante.
Paul Draper,

6
Preparati a rinunciare a questo argomento con il tuo team la prossima volta che sollevi questo argomento e ottieni resistenza. Sono il tipo di persona che trova importante usare una terminologia corretta in modo che ci siano meno opportunità di comunicazione errata; molte persone non la pensano in questo modo e lo prenderanno anche come un attacco alla loro intelligenza se provi a valutare le loro scelte tecniche / verbali, nel qual caso non vale la pena. Se hai un nevrotico (o più) nella tua squadra e resistono all'idea che in realtà non stiano facendo REST, è meglio lasciar perdere.
Ravenstine,

Risposte:


43

Chiamalo un'API HTTP .

È conforme agli standard HTTP e non ha nient'altro a strati (ad esempio SOAP).

Gli standard HTTP definiscono risorse, verbi, intestazioni, negoziazione dei contenuti, ecc.

REST (REpresentational State Transfer) è un'architettura con requisiti che risultano compatibili con gli standard HTTP esistenti, ma HTTP funziona da solo.


Nella mia esperienza, il 90% di "API HTTP REST" dovrebbe definirsi "solo" un'API HTTP.

Non vergognarti di lasciare l'etichetta REST. Come per i microservizi e i database non relazionali, non è necessario disporre di un'API RESTful per essere interessanti. Roy ha deciso di creare l'architettura di applicazione di rete più longeva, la più retrocompatibile possibile. Ha fatto un buon lavoro. Ma non tutto ha bisogno di oltre 40 anni di compatibilità.


6
"Nella mia esperienza, il 90% di" API HTTP REST "dovrebbe definirsi" solo "un'API HTTP". +1
Artur Gaspar

Non potrei essere più d'accordo. Dove attualmente lavoro, realizziamo un'interfaccia utente client-server all'avanguardia utilizzando un framework applicativo all'avanguardia in un rapido ciclo di sviluppo. Non c'è niente di RESTOSO al riguardo; usiamo solo POST. Non è alla moda, ma fa il lavoro e lo fa molto bene. È il codice più pulito che abbia mai visto.
Robert Harvey,


8

Hypermedia non è mai diventato molto popolare con le API simili a REST - al punto che quando un'API implementa effettivamente la navigazione ipermediale, il termine RESTful semplicemente non è sufficiente per distinguerlo da qualsiasi altra API Web "RESTful". REST è diventato un termine generico o qualsiasi API Web basata su risorse e nuovi nomi come l' API Hypermedia  sono stati coniati per concentrarsi sul concetto hypermedia.

Non voglio davvero sostenere l'uso di termini errati, ma penso che l'interpretazione moderna e generale di REST significhi semplicemente usare URL e verbi HTTP uniformi per la maggior parte delle persone. Non è corretto, ma chiunque conosca la definizione di Fieldings, dovrebbe anche sapere che molti altri no. D'altra parte, chiunque conosca il REST solo osservando come sono implementate le API "RESTful" esistenti, non saprà di cosa stai parlando quando menzioni vincoli REST meno noti come HATEOAS o codice su richiesta. Il fielding potrebbe non piacere, ma penso che sia troppo tardi per tornare alla definizione originale *. E siamo onesti: se senti qualcuno parlare della sua API REST per la prima volta, pensi immediatamente che non includa l'ipermedia, vero?

Insistere sulla corretta definizione di RESTful di solito crea solo ulteriore confusione. Come per molti termini che hanno cambiato il loro significato nel tempo o che le masse hanno semplicemente adottato qualcosa di sbagliato, apprezzo se qualcuno conosce la definizione originale ma non correggerei nessuno che sta utilizzando l'interpretazione moderna più ampia di REST.

* e anche troppo tardi per stabilire nuovi termini per API non ipermediali simili a REST, del resto. Come dovremmo chiamarli comunque? ... RESTish ?


1
L'API di Github ha molti hypermedia. Non so quanto sia tipico. Concordo con te sul fatto che il termine "RESTful" sia sfuggito al controllo di Fielding per comprendere più cose.
dal

2

È un'interfaccia CRUD (Crea, Leggi, Aggiorna, Elimina) su HTTP.

Non riesco a pensare ad alcuna autorità che sostenga questa affermazione, quindi spero che tu ottenga risposte sempre migliori.


4
Qualcosa di RESTful si adatterebbe anche a quella definizione.
Blrfl,

1
@Blrfl AFAICT Alcuni APIS RESTful ne sarebbero il superset. Non soddisferebbe la definizione di Fielding se i record non contengono collegamenti ipertestuali.
apertura del

2

Puoi chiamarlo come preferisci, le persone tendono ad aggrapparsi (quasi religiosamente) a qualsiasi parte delle "specifiche" del REST che non stai seguendo e utilizzarlo come un punto di protesta che è altamente dannoso per lo sviluppo. Detto questo, il semplice fatto è che esistono (quasi) zero servizi che implementano un vero REST per i loro servizi API.

Nel nostro team abbiamo chiamato il nostro Stateless APImentre era in fase di sviluppo perché avevamo un'API SOAP legacy e state legacy che stavamo sostituendo (l'API legacy stessa non ha mai avuto un nome concordato e significativo, quindi non siamo rimasti troppo presi dai nomi ).

Ora questo progetto ha solo un'API che si chiama semplicemente the <project> API. Quando alla fine lo sostituiremo, la nuova API sarà semplicemente conosciuta come the new <project> API.

Dare un nome interno fantasioso e descrittivo è quasi insignificante a meno che tu non abbia così tante API che devi differenziare questo dal resto (nel qual caso probabilmente dovresti rinominare anche tutti gli altri).


Mentre la domanda originale era scarsa, questa risposta è un solido tentativo di rispondere alla domanda
Michael Shaw,

2

Puoi chiamarlo un'API Web . È un termine molto ampio, ma può evitare di fare chiacchiere sul significato di altre definizioni dei tipi di API. Il termine è meno tecnico e preciso rispetto ad alternative come l' API HTTP , ma potrebbe essere un vantaggio quando si parla con persone non tecniche.

Questo termine è anche usato da Leonard Richardson (che ha definito il modello di maturità Richardson che è già menzionato un'altra risposta, una misura ben accettata per quanto un'API sia vicina a un'architettura REST). È quello che ottieni se elimini la parte "RESTful" di una " API Web RESTful ".

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.