ข้อดีของการใช้ Restangular ผ่าน ngResource คืออะไร?


133

ngResourceแล้วดูเหมือนง่ายจริงๆที่จะใช้สิ่งที่มี ...

ข้อดี / ข้อเสียของการใช้Restangularผ่านngResourceคืออะไร?

1.1.3 $resourceจะกลับสัญญาและสามารถ implimented ใช้ล่าสุดประชาสัมพันธ์กระทำ จะมีการเสนอการสนับสนุนในอนาคต$resourceเพื่อสนับสนุนคำกริยาเพิ่มเติมที่ Restangular หรือไม่? และถ้าสิ่งนั้นเกิดขึ้น Restangular ดูเหมือนว่ามันจะหายไปและไม่สัมพันธ์กัน


41
ปิดทำไม? นี่เป็นคำถามที่ถูกต้องซึ่งควรมีคำตอบที่ชัดเจน โดยเฉพาะอย่างยิ่งในช่วงต้นเกมเมื่อคุณพยายามตัดสินใจว่าจะใช้บริการอะไร จะเกิดอะไรขึ้นในสามเดือนเมื่อผู้ชายคนนี้เลิกสนับสนุน Restangular เนื่องจาก ngResource ของ Google ตรวจพบคุณสมบัติทั้งหมดที่ขาดหายไป จากนั้นหาก$httpมีการเปลี่ยนแปลงรุ่นใหญ่เป็น angularjs --- คุณจะไม่สามารถอัปเกรดได้เนื่องจากการเรียกใช้บริการของ Restangualr จะคาดหวังว่า "อย่างอื่น" และคุณจะต้องใช้กรอบนี้ที่คุณ "ตัดสินใจจะไปด้วย"
Dan Kanze

1
ลองดูได้ที่นี่github.com/mgonto/restangular/blob/master/…
mgonto

@ DanKanze: ผู้ใช้ SO ระดับกลางมีความสุขกับคำถามเช่นนี้ เป็นเรื่องที่น่าผิดหวังจริงๆเนื่องจากคุณไม่ได้ถามว่า "ไหนดีกว่า" ... คำแนะนำเดียวของฉันคือการถามคำถามอย่างรอบคอบในอนาคตเพื่อไม่ให้ "อัตนัยเกสตาโป" ตกทอดมาที่คุณอย่างเต็มกำลัง
rinogo

คำตอบ:


232

ฉันเป็นผู้สร้าง Restangular

ฉันได้สร้างส่วนบน README โดยมีความแตกต่างกับทรัพยากร $ คุณสามารถตรวจสอบได้ที่นี่https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource

อย่างไรก็ตามเมื่อสรุปแล้วนอกเหนือจากคุณสมบัติเพิ่มเติมและแนวทางตามสัญญาแล้วแนวคิดก็คือ Restangular ยังสามารถจัดการ URL ทั้งหมดของคุณเพื่อที่คุณจะได้ไม่ต้องรู้อะไรเกี่ยวกับพวกเขา

สมมติว่าคุณมีสิ่งนี้สำหรับรถยนต์: / users / 123 / cars / 456

ใน $ resource คุณต้องสร้าง URL นั้นด้วยตนเองและต้องสร้าง $ resource object สำหรับสิ่งนี้ด้วยตนเอง Restangular ช่วยคุณในเรื่องนี้โดยการ "จำ" URL

ดังนั้นหากคุณทำในบางสถานที่

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

หวังว่านี่จะช่วยได้!


45
+1 สำหรับการกระโดดในสิ่งนี้ ใครจะอธิบายได้ดีไปกว่าผู้ชายที่สร้างมันขึ้นมาเองฮ่าฮ่า!
Dan Kanze

27
วิธีการ .one('users', 123)ใดมากหรือน้อย "รู้" เกี่ยวกับ URL ของคุณมากกว่า'/users/123'? (เพิ่งเล่น Devil's advocate) ดูเหมือนว่า'/foo/123/bar/123'จะง่ายกว่า.one('foo', 123).one('bar', 123)มาก
Ben Lesh

5
แนวคิดก็คือในบางจุดคุณจะรู้ชื่อเอนทิตีและรหัส var user = Restangular.one('users', 123).getList()ดังนั้นก่อนอื่นคุณจะทำสิ่งที่โกหก ต่อมาในรหัสหรือในบางตัวควบคุมอื่น ๆ user.getList('buildings')ที่คุณทำ ที่นี่คุณเพิ่งรู้ประเภทต่อไปคืออาคาร แต่มันค้นหา/users/123/buildings/ดังนั้นคุณจึงไม่จำเป็นต้องรู้ URL แบบเต็มตลอดเวลา
mgonto

3
ดี แต่ด้านเดียว. "ความไม่เกี่ยวข้อง" ที่เป็นไปได้ของ Restangular ได้รับการแนะนำในหัวข้อนี้เกี่ยวกับการปรับปรุงล่าสุดของ$resource- ฉันไม่ได้บอกเป็นนัยว่ามันจะไม่เกี่ยวข้องด้วยวิธีการใด ๆ เพียง แต่มีการกล่าวถึง ข้อเสียหรือข้อเสียที่เป็นข้อเท็จจริงใด ๆ ที่เราควรทราบ?
youri

3
สิ่งที่อยู่ใน README นั้นล้าสมัยไปแล้วกับ ngresource เวอร์ชันปัจจุบันไม่ใช่หรือ? (เช่น / การใช้คำสัญญาการตกแต่งวัตถุตอบสนองผ่าน transformResponse)
surtyaar

8

ฉันพบว่า RequestInterceptor ของ Restangular ค่อนข้างสะดวกในการลบบางฟิลด์ออกจากวัตถุก่อนที่จะทำการร้องขอ บริการเว็บ REST ส่วนใหญ่ที่ฉันกำลังทำงานอยู่อย่าคาดหวังว่า id ในข้อมูลออบเจ็กต์ในคำขอ PUT เช่นใน url โดยทั่วไปพวกเขาไม่คาดหวังช่องข้อมูลเพิ่มเติมที่ไม่สามารถอัปเดตโดย PUT (เช่นรหัสหรือกระสุนที่สร้างขึ้นโดยการตั้งชื่อเป็นต้น) ฉันพบว่าสิ่งนี้ตรงไปตรงมากับ Restangular ในขณะที่ฉันยังไม่ได้หาวิธีทำกับทรัพยากร $ ด้วยวิธีที่สะอาด แต่ฉันแน่ใจว่ามันเป็นไปได้

เห็นได้ชัดว่าเราสามารถเปลี่ยนบริการเว็บให้เพิกเฉยต่อช่องพิเศษเหล่านั้นได้ แต่ก็ไม่สามารถทำได้เสมอไป


3

ngResource ไม่คืนสัญญาในเวอร์ชันเสถียรล่าสุด (ปัจจุบันคือ 1.0.6) นอกจากนี้ดูเหมือนว่า Restangular จะแสดงกริยามากกว่า ngResource (แสดง PUT, OPTIONS, PATCH ฯลฯ )

หากคุณไม่ต้องการคำกริยาเพิ่มเติมและอยู่ในสาขาที่ไม่เสถียรของ AngularJS (ซึ่งรวมถึงสัญญาสำหรับ ngResource) ฉันไม่เห็นเหตุผลสำคัญใด ๆ ที่จะใช้ Restangular กับ ngResource

ใช้อะไรก็ได้ที่คุณรู้สึกสบายใจ


2
1.1.3 $resourceจะคืนคำสัญญาและสามารถบอกเป็นนัยได้โดยใช้การประชาสัมพันธ์ล่าสุด stackoverflow.com/questions/16429832/…ในอนาคตจะมีการเสนอ$resourceการสนับสนุนเพื่อรองรับคำกริยาเพิ่มเติมหรือไม่ และถ้าสิ่งนั้นเกิดขึ้น Restangular ดูเหมือนว่ามันจะหายไปและไม่สัมพันธ์กัน
Dan Kanze

@DanKanze ฉันไม่แน่ใจเกี่ยวกับการรองรับคำกริยาเพิ่มเติมในอนาคต สำหรับกรณีการใช้งานส่วนใหญ่ไม่จำเป็นต้องใช้คำกริยาเพิ่มเติมดังนั้นฉันจึงไม่คาดหวังว่าสิ่งนั้นจะถูกสร้างขึ้นในเร็ว ๆ นี้ แต่ไม่ได้หมายความว่าจะไม่เกิดขึ้น
rtcherry

2
@DanKanze - สงสัยจะไม่เกี่ยว Restangular ให้การสนับสนุนที่ดีกว่ามากสำหรับทรัพยากรที่ซ้อนกันซึ่งเป็นข้อกำหนดสำหรับนักพัฒนาบางคน สิ่งที่ Ng-resource ไม่สนับสนุนเป็นพิเศษ นอกจากนี้ ng-resource ยังไม่เป็นไปตามอนุสัญญา RESTful ซึ่งเป็นสิ่งที่ฉันพูดถึงในบล็อกของฉัน
Oddman

@Oddman จุดดีเกี่ยวกับคู่ทรัพยากรที่ซ้อนกันมีประโยชน์อย่างยิ่งสำหรับแบ็กเอนด์ Rails
ardochhigh

1

จากการติดตามคำตอบข้างต้นและสำหรับผู้อ่านใหม่เช่นฉันที่สนใจในความคิดเหล่านั้น:

“ และถ้าสิ่งนั้นเกิดขึ้น Restangular ดูเหมือนว่ามันจะหายไปและไม่สัมพันธ์กัน”

"จะเกิดอะไรขึ้นในสามเดือนเมื่อผู้ชายคนนี้เลิกสนับสนุน Restangular เนื่องจาก ngResource ของ Google ตรวจพบคุณลักษณะทั้งหมดที่ขาดหายไป"

  • [ ถาม 2 ปีที่แล้ว ]

ในความคิดของฉันการรับประกันเดียวที่จะอยู่รอดของไลบรารีโอเพนซอร์สคือชุมชนที่สร้างขึ้นรอบ ๆ ตัวอย่างที่ดีที่สุดคือmariaDBและWebScaleSQLซึ่งทั้งคู่เกิดมาจากการเติบโตของระบบจัดการฐานข้อมูลเชิงสัมพันธ์ที่ยอดเยี่ยม MySQL

ในเวลาเขียนนี้ Restangular having 6699 stars and 727 forksกำลังก้าวไปข้างหน้าสู่ Restangular 2.0 ซึ่งมีไว้เพื่อรองรับ angularJs 2.0 และ ES6


0

สำหรับเว็บไซต์ง่ายๆอย่างรวดเร็วที่คุณต้องการใช้งานตลอดไปด้วยการสนับสนุนขั้นต่ำฉันจะใช้ http HttpClientเชิงมุมในตัวใครก็ตามเมื่อฉันทำงานในโครงการที่ฉันรักและฉันสนุกและพยายามใช้เทคโนโลยีที่ยอดเยี่ยมทั้งหมด ฉันจะใช้Ngx-Restangular

นอกจากนี้คุณควรทราบว่า ngx-restangular ทำงานร่วมกับบริการ RESTful ตามชื่อที่แนะนำเท่านั้น ดังนั้นสำหรับบริการที่ให้ SOAP คุณจะไม่สามารถใช้Ngx-Restangular ได้

https://ngx-restangular.com/

อย่างที่บอกว่าฉันจะใช้ ngx-restangular เกือบตลอดเวลาเพราะฉันพยายามทำงานในโปรเจ็กต์ที่ฉันคิดว่าเจ๋งและพยายามใช้สิ่งที่ฉันคิดว่าดีที่สุด

ขอให้โชคดี!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.