Qual è il vantaggio dell'utilizzo di Restangular su ngResource?


133

ngResourcesembra già molto semplice implementare le cose con ...

Quali sono i vantaggi / gli svantaggi dell'utilizzo di Restangular su ngResource ?

1.1.3 $resourcerestituiranno promesse e potranno essere implementate utilizzando l' ultimo commit PR . Sarà offerto un supporto futuro $resourceper supportare verbi aggiuntivi che Restangular fa? E se ciò accade, Restangular sembra che scomparirà e diventerà irrelivante.


41
Perché chiudere Questa è una domanda valida che dovrebbe avere risposte definitive. Soprattutto all'inizio del gioco quando stai cercando di decidere cosa utilizzare per le chiamate di servizio. Cosa succede in tre mesi quando questo ragazzo abbandona il supporto per Restangular perché ngResource di Google ha raggiunto tutte le funzionalità che mancava. Quindi se $httpvengono apportate importanti modifiche alla versione di angularjs --- non sarai in grado di eseguire l'aggiornamento perché le chiamate di servizio di Restangualr si aspettano "qualcos'altro" e finirai per sventrare questo framework con cui "hai deciso di andare".
Dan Kanze,

1
Dai

@DanKanze: gli utenti SO di medio livello sono molto contenti di domande come questa. È davvero frustrante dal momento che sicuramente non ti stai chiedendo "qual è il migliore" ... Il mio unico suggerimento sarebbe di formulare attentamente le domande in futuro in modo da non invogliare la "Gestapo soggettiva" a discendere su di te nella loro piena potenza.
Rinogo,

Risposte:


232

Sono il creatore di Restangular.

Ho creato una sezione sul README con le differenze rispetto a $ resource. Puoi verificarli qui https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource

Comunque, come riassunto, oltre alle funzionalità aggiuntive e all'approccio basato sulla promessa, l'idea è che Restangular possa anche gestire tutti i tuoi URL, in modo da non doverne sapere nulla.

Supponiamo di avere qualcosa del genere per le automobili: / users / 123 / cars / 456

In $ resource, dovresti costruire quell'URL manualmente e dovresti anche costruire l'oggetto $ resource per questo manualmente. Restangular ti aiuta in questo "ricordando" gli URL.

Quindi se lo fai in qualche posto

Restangular.one("users", 123).get().then(function(user) {
  $scope.user = user;
});

// Some other code

//Automatically does the request to /users/123/cars as it remembers in which object you're asking it.
$scope.user.getList('cars')

Spero che questo ti aiuti!


45
+1 per saltare su questo. Chi meglio di spiegare poi il ragazzo che l'ha costruito lui stesso haha!
Dan Kanze,

27
come fa .one('users', 123)più o meno "a conoscenza" del tuo URL di '/users/123'? (interpretando solo l'avvocato del diavolo) Sembra che '/foo/123/bar/123'sia molto più facile di .one('foo', 123).one('bar', 123).
Ben Lesh,

5
L'idea è che ad un certo punto, conosci solo il nome dell'entità e l'id. Quindi prima fai qualcosa per mentire var user = Restangular.one('users', 123).getList(). Più avanti nel codice o in qualche altro controller, lo fai user.getList('buildings'). Qui, conosci solo il tipo successivo che è edifici, ma interroga /users/123/buildings/, quindi non devi conoscere l'URL completo per tutto il tempo
mgonto

3
Buono ma unilaterale. La possibile "irrilevanza" di Restangular è stata suggerita in questa discussione per quanto riguarda i recenti miglioramenti di $resource- Non intendo che diventerà irrilevante in alcun modo, solo che è stato menzionato. Eventuali svantaggi o aspetti concreti di cui dovremmo essere a conoscenza?
tuo

3
non c'è molto di ciò che è in quel README obsoleto con una versione più attuale di ngresource? (ie / utilizzo delle promesse, decorazione dell'oggetto di risposta tramite transformResponse)
surtyaar

8

Ho trovato il RequestInterceptor di Restangular abbastanza utile per rimuovere alcuni campi dall'oggetto prima di effettuare la richiesta. La maggior parte dei servizi Web REST con cui sto attualmente lavorando non prevedono l'id nei dati oggetto in una richiesta PUT, ad esempio, solo nell'URL. Generalmente non si aspettano campi di dati aggiuntivi che non possono essere aggiornati da PUT (come l'id, o una lumaca che viene generata impostando il titolo, ecc.). Ho scoperto che questo è semplice con Restangular mentre non ho capito come farlo con $ resource in modo pulito, ma sono sicuro che sia possibile in qualche modo.

Ovviamente si potrebbe anche cambiare il servizio web per ignorare quei campi extra, ma ciò non è sempre possibile.


3

ngResource non restituisce promesse nell'ultima versione stabile (attualmente 1.0.6). Inoltre, sembra che Restangular esponga più verbi di ngResource (espone PUT, OPTIONS, PATCH, ecc.).

Se non hai bisogno dei verbi aggiuntivi e sei sul ramo instabile di AngularJS (che include le promesse per ngResource), non vedo alcun motivo importante per usare Restangular su ngResource.

Usa tutto ciò con cui ti senti a tuo agio.


2
1.1.3 $resourcerestituiranno promesse e potranno essere implementate utilizzando l'ultimo commit PR. stackoverflow.com/questions/16429832/… Verrà offerto il supporto futuro $resourceper supportare verbi aggiuntivi? E se ciò accade, Restangular sembra che scomparirà e diventerà irrelivante.
Dan Kanze,

@DanKanze Non sono sicuro del supporto futuro per ulteriori verbi. Per la maggior parte dei casi d'uso, i verbi aggiuntivi non sono necessari, quindi non mi aspetterei che venga costruito presto, ma ciò non significa che non accadrà.
1313

2
@DanKanze - Dubito che diventerebbe irrilevante. Restangular fornisce un supporto molto migliore per le risorse nidificate, che è un requisito per alcuni sviluppatori. Qualcosa che Ng-risorsa non supporta particolarmente bene. Inoltre, ng-resource non segue le convenzioni RESTful, qualcosa di cui ho parlato sul mio blog.
Oddman,

@Oddman buon punto sul compagno di risorse nidificate, particolarmente utile per i backend di Rails.
Ardochhigh,

1

Come seguito alle risposte di cui sopra e per i nuovi lettori, come me, interessati a questi pensieri:

"E se ciò accade, Restangular sembra che sparirà e diventerà irrelivante."

"Cosa succede in tre mesi quando questo ragazzo abbandona il supporto per Restangular perché ngResource di Google ha raggiunto tutte le funzionalità che mancava."

  • [ chiesto 2 anni fa ]

Secondo me l' unica garanzia per sopravvivere a una biblioteca open source è la comunità costruita attorno ad essa. un miglior esempio potrebbe essere mariaDB e WebScaleSQL che sono nati entrambi come un fork crescente per l'ottimo sistema di gestione di database relazionali MySQL.

In questo momento di scrittura Restangular having 6699 stars and 727 forksora sta andando avanti a Restangular 2.0 che intende supportare angularJs 2.0 ed ES6.


0

Per un sito Web semplice e veloce che si desidera eseguire per sempre con il minimo supporto, utilizzare l' httpClient http incorporato angolare chiunque, mentre sto lavorando a un progetto che amo e mi diverto e sto provando a utilizzare tutte le tecnologie più interessanti userò NGX-Restangular

Inoltre, dovresti sapere che ngx-restangular funziona con i servizi RESTful solo come suggerisce il nome. Pertanto, per i servizi che forniscono SOAP non sarà possibile utilizzare Ngx-Restangular

https://ngx-restangular.com/

Detto questo , userei ngx-restangular la maggior parte del tempo, poiché cerco sempre di lavorare su un progetto che trovo interessante e cerco di implementare ciò che penso sia meglio.

Buona fortuna!

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.