Chiamando qualcosa un'API non ti dice molto su di esso. È una categoria molto ampia, quindi le cose molto estranee vi cadranno dentro. Ma diamo un'occhiata ai due che hai citato.
Representational State Transfer (REST) is an architectural style that defines a set of constraints and properties based on HTTP.
link
Questo è diventato un metodo molto comune per i siti Web per richiedere dati da un server. Detto questo, è solo un modo per due sistemi remoti di parlare tra loro. Non è necessario utilizzare un database.
Ad esempio, potresti inviare una richiesta GET a somedomain.com/increment/35
e ricevere 36 come risposta. Nessun database necessario. Solo un po 'di codice che aggiunge 1 a qualsiasi cosa tu fornisca.
ORM in computer science is a programming technique for converting data between incompatible type systems using object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language.
link
Ho l'impressione che quella citazione lasci fuori il caso d'uso comune e forse solo decente, che serva da intermediario tra il tuo codice e un database. L'idea è che semplificherà l'accesso e la modifica delle voci del database.
Ad esempio, invece di scrivere istruzioni SQL nel tuo codice SELECT something FROM myTable
, potresti scrivere qualcosa come
entries = orm.myTable.getAll() // This replaced the SELECT call
loop entries as entry
print(entry.something)
end loop
Un vantaggio è che se il nome di quella tabella cambia, è sufficiente aggiornare l'ORM piuttosto che tutte le chiamate SELECT. Uno svantaggio è la complessità che l'ORM comporta. Se fa risparmiare tempo, usalo. In caso contrario, non.
Potresti trovarti a utilizzare sia un'API REST che un ORM nei tuoi progetti, o forse solo uno o l'altro. Suggerirei di utilizzare alcuni strumenti che implementano ogni schema utile per ottenere una migliore comprensione di essi. Per lo meno leggi la loro documentazione. Ti aiuterà a capire il loro scopo molto più velocemente. Ogni lingua li ha, ma qui ci sono un paio in Javascript: