Apa keuntungan menggunakan Restangular lebih dari ngResource?

133

ngResourcesudah tampak sangat sederhana untuk mengimplementasikan hal-hal dengan ...

Apa Keuntungan / Kerugian menggunakan Restangular over ngResource ?

1.1.3 $resourceakan mengembalikan janji dan dapat dipuji menggunakan komit PR terbaru . Akankah dukungan masa depan ditawarkan $resourceuntuk mendukung kata kerja tambahan yang Restangular lakukan? Dan jika itu terjadi, Restangular sepertinya akan menghilang dan menjadi tidak relevan.

Dan Kanze
sumber
41
Kenapa tutup? Ini adalah pertanyaan yang valid yang harus memiliki jawaban pasti. Terutama di awal permainan ketika Anda mencoba memutuskan apa yang akan digunakan untuk panggilan layanan Anda. Apa yang terjadi dalam tiga bulan ketika orang ini menjatuhkan dukungan untuk Restangular karena ngResource Google menangkap semua fitur yang hilang. Kemudian jika $httpperubahan rilis utama dibuat untuk angularjs --- Anda tidak akan dapat memutakhirkan karena panggilan layanan Restangualr akan mengharapkan "sesuatu yang lain" dan Anda akan berakhir dengan memotong kerangka ini Anda "memutuskan untuk pergi dengan".
Dan Kanze
@DanKanze: Pengguna SO tingkat menengah sangat senang dengan pertanyaan seperti ini. Ini benar-benar membuat frustrasi karena Anda jelas-jelas tidak menanyakan "mana yang lebih baik" ... Satu-satunya saran saya adalah dengan berhati-hati mengutarakan pertanyaan di masa depan agar tidak membujuk "Subyektif Gestapo" untuk menghampiri Anda dengan kekuatan penuh mereka.
rinogo

Jawaban:

232

Saya pencipta Restangular.

Saya telah membuat bagian tentang README dengan perbedaan terhadap $ resource. Anda dapat memeriksanya di sini https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource

Pokoknya, sebagai tambahan, selain fitur tambahan dan pendekatan berbasis janji, idenya adalah bahwa Restangular juga dapat menangani semua URL Anda, sehingga Anda tidak perlu tahu apa-apa tentang mereka.

Misalkan Anda memiliki sesuatu seperti ini untuk mobil: / pengguna / 123 / mobil / 456

Di $ resource, Anda harus membuat URL itu secara manual dan Anda juga harus membuat $ object object untuk ini secara manual. Restangular membantu Anda dalam hal ini dengan "mengingat" URL.

Jadi jika Anda melakukannya di suatu tempat

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')

Semoga ini membantu!

mgonto
sumber
45
+1 untuk melompati ini. Siapa yang lebih baik untuk menjelaskan maka orang yang membangunnya sendiri haha!
Dan Kanze
27
Bagaimana .one('users', 123)lebih atau kurang "mengetahui" tentang URL Anda '/users/123'? (Hanya bermain sebagai pendukung Iblis) Sepertinya '/foo/123/bar/123'jauh lebih mudah daripada .one('foo', 123).one('bar', 123).
Ben Lesh
5
Idenya adalah bahwa pada titik tertentu, Anda hanya tahu nama entitas dan id. Jadi, pertama-tama Anda melakukan sesuatu yang bohong var user = Restangular.one('users', 123).getList(). Kemudian dalam kode atau beberapa pengontrol lain, Anda lakukan user.getList('buildings'). Di sini, Anda hanya tahu jenis berikutnya yang merupakan bangunan, tetapi itu pertanyaan /users/123/buildings/, jadi Anda tidak perlu tahu URL lengkap sepanjang waktu
mgonto
3
Bagus tapi sepihak. Kemungkinan "tidak relevan" dari Restangular telah disarankan dalam utas ini sehubungan dengan peningkatan terbaru $resource- Saya tidak menyiratkan itu akan menjadi tidak relevan dengan cara apa pun, hanya saja telah disebutkan. Adakah kerugian atau fakta faktual yang harus kita ketahui?
youri
3
Bukankah banyak yang ada dalam README yang ketinggalan zaman dengan versi ngresource yang lebih terkini? (Yaitu / penggunaan janji-janji, dekorasi objek respons melalui transformResponse)
surtyaar
8

Saya menemukan RequestInterceptor Restangular cukup berguna untuk menghapus beberapa bidang dari objek sebelum membuat Permintaan. Sebagian besar layanan web REST saat ini saya bekerja dengan jangan berharap id dalam data objek dalam permintaan PUT misalnya, hanya di url. Umumnya mereka tidak mengharapkan bidang data tambahan yang tidak dapat diperbarui oleh PUT (seperti id, atau siput yang dihasilkan dengan mengatur judul dll). Saya menemukan ini menjadi mudah dengan Restangular sementara saya belum menemukan cara melakukannya dengan $ resource dengan cara yang bersih, tapi saya yakin itu mungkin terjadi entah bagaimana.

Jelas seseorang juga dapat mengubah layanan web untuk mengabaikan bidang-bidang tambahan, tapi itu tidak selalu mungkin.

awdng
sumber
3

ngResource tidak mengembalikan janji dalam rilis stabil terbaru (saat ini 1.0.6). Selain itu, sepertinya Restangular mengekspos lebih banyak kata kerja daripada ngResource (mengekspos PUT, OPTIONS, PATCH, dll).

Jika Anda tidak memerlukan kata kerja tambahan dan berada di cabang AngularJS yang tidak stabil (yang mencakup janji untuk ngResource), saya tidak melihat alasan utama untuk menggunakan Restangular daripada ngResource.

Gunakan apa pun yang Anda merasa nyaman.

rtcherry
sumber
2
1.1.3 $resourceakan mengembalikan janji dan dapat dipuji menggunakan komit PR terbaru. stackoverflow.com/questions/16429832/... Apakah dukungan di masa mendatang akan ditawarkan $resourceuntuk mendukung kata kerja tambahan? Dan jika itu terjadi, Restangular sepertinya akan menghilang dan menjadi tidak relevan.
Dan Kanze
@DanKanze Saya tidak yakin tentang dukungan di masa depan untuk kata kerja tambahan. Untuk sebagian besar kasus penggunaan, kata kerja tambahan tidak diperlukan, jadi saya tidak berharap itu akan dibangun dalam waktu dekat, tetapi itu tidak berarti itu tidak akan terjadi.
rtcherry
2
@DanKanze - Saya ragu itu akan menjadi tidak relevan. Restangular menyediakan dukungan yang jauh lebih baik untuk sumber daya bersarang, yang merupakan persyaratan bagi beberapa pengembang. Sesuatu yang Ng-resource tidak mendukung dengan baik. Selain itu, ng-resource juga tidak mengikuti konvensi RESTful, sesuatu yang saya bicarakan di blog saya.
Oddman
@Oddman poin bagus tentang pasangan sumber daya bersarang, terutama berguna untuk backend Rails.
ardochhigh
1

Sebagai tindak lanjut dari jawaban di atas dan untuk pembaca baru , seperti saya, tertarik dengan pemikiran itu:

"Dan jika itu terjadi, Restangular sepertinya akan menghilang dan menjadi tidak relevan."

"Apa yang terjadi dalam tiga bulan ketika orang ini menjatuhkan dukungan untuk Restangular karena Google sumber daya menangkap semua fitur yang hilang."

  • [ ditanya 2 tahun yang lalu ]

Menurut saya satu - satunya jaminan bagi kelangsungan perpustakaan open-source adalah komunitas yang dibangun di sekitarnya. contoh terbaik adalah mariaDB dan WebScaleSQL yang keduanya dilahirkan sebagai pertanda pertumbuhan sistem manajemen basis data relasional MySQL.

Pada saat penulisan ini, Restangular having 6699 stars and 727 forkssekarang bergerak maju ke Restangular 2.0 yang dimaksudkan untuk mendukung angularJs 2.0 dan ES6.

Salem Ouerdani
sumber
0

Untuk situs web sederhana dan cepat yang ingin Anda jalankan selamanya dengan dukungan minimum, saya akan menggunakan http sudut lurus bawaan HttpClient siapa pun ketika saya mengerjakan proyek yang saya sukai dan saya menikmati dan mencoba menggunakan semua teknologi keren kemudian Saya akan menggunakan Ngx-Restangular

Anda juga harus tahu bahwa ngx-restangular berfungsi dengan layanan RESTful hanya seperti namanya. Jadi untuk layanan yang menyediakan SABUN Anda tidak akan dapat menggunakan Ngx-Restangular

https://ngx-restangular.com/

Itu dikatakan saya akan menggunakan ngx-restangular sebagian besar waktu karena saya selalu mencoba untuk bekerja pada proyek yang saya temukan keren dan mencoba untuk mengimplementasikan apa yang menurut saya terbaik.

Semoga berhasil!

Nour Lababidi
sumber