ngResource보다 Restangular를 사용하면 어떤 이점이 있습니까?


133

ngResource이미 구현하는 것이 정말 간단보입니다 ...

ngResource를 통해 Restangular 를 사용하는 장점 / 단점은 무엇입니까 ?

1.1.3 $resource약속을 반환하고 최신 PR 커밋을 사용하여 암시 될 수 있습니다 . $resourceRestangular가 수행하는 추가 동사를 지원 하기 위해 향후 지원이 제공 됩니까? 그리고 그 일이 발생하면 Restangular는 사라지고 무적 상태가 될 것 같습니다.


41
왜 가까이? 이것은 명확한 답변이 있어야하는 유효한 질문입니다. 특히 게임 초반에 서비스 요청에 사용할 것을 결정하려고 할 때 특히 그렇습니다. Google의 ngResource가 누락 된 모든 기능을 따라 잡았 기 때문에이 사람이 Restangular에 대한 지원을 중단하면 3 개월 안에 어떻게됩니까? 그러면 $httpangularjs에 대한 주요 릴리스 변경 사항이 있을 경우 Restangualr의 서비스 요청에 "다른 것"이있을 것으로 예상하고 업그레이드하기로 결정했기 때문에 업그레이드 할 수 없습니다.
Dan Kanze

1
여기를 확인하십시오 github.com/mgonto/restangular/blob/master/…
mgonto

@ Dankanze : 중간 수준의 SO 사용자는 이와 같은 질문에 매우 만족합니다. "더 낫다"고 묻지 않기 때문에 정말 실망 스럽습니다 ... 내 유일한 제안은 "주관적인 게슈타포"가 당신을 온전히 강타하도록 유혹하지 않도록 앞으로 질문을 신중하게 표현하는 것입니다.
rinogo

답변:


232

저는 Restangular의 제작자입니다.

README에 $ resource와의 차이점이있는 섹션을 만들었습니다. https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource 여기에서 확인할 수 있습니다

어쨌든 추가 기능과 약속 기반 접근 방식 외에도 Restangular는 모든 URL을 처리 할 수 ​​있으므로 URL에 대해 알 필요가 없습니다.

자동차에 대해 다음과 같은 것이 있다고 가정하십시오. / users / 123 / cars / 456

$ resource에서 해당 URL을 수동으로 구성해야하며이를 위해 $ resource 객체도 수동으로 구성해야합니다. 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'? (방금 악마의 옹호자를 연주하는 것) 그냥 것 '/foo/123/bar/123'보다 훨씬 쉬운 것 같습니다 .one('foo', 123).one('bar', 123).
벤 레시

5
아이디어는 어느 시점에서 엔티티 이름과 ID를 알고 있다는 것입니다. 그래서 당신은 먼저 거짓말을 var user = Restangular.one('users', 123).getList()합니다. 나중에 코드 나 다른 컨트롤러에서 할 수 user.getList('buildings')있습니다. 여기서는 건물 인 다음 유형 만 알지만 쿼리 /users/123/buildings/하기 때문에 항상 전체 URL을 알 필요는 없습니다.
mgonto

3
좋지만 일방적입니다. Restangular의 가능한 "부적절 성"은 최근 개선 된 점과 관련하여이 스레드에서 제안되었습니다. $resource나는 그것이 언급되었다고해서 어떤 의미로도 무의미해질 것이라고 암시하지 않습니다. 우리가 알고 있어야 할 실질적인 단점이나 문제가 있습니까?
youri

3
최신 버전의 ngresource로 구식 인 README의 내용이 많지 않습니까? (예 / 약속의 사용, transformResponse를 통해 응답 객체를 장식)
surtyaar

8

Restangular의 RequestInterceptor가 Request를 만들기 전에 객체에서 일부 필드를 제거하는 것이 매우 편리하다는 것을 알았습니다. 현재 작업중 인 대부분의 REST 웹 서비스는 PUT 요청의 객체 데이터에서 ID를 예상하지 않습니다 (예 : URL). 일반적으로 PUT에서 업데이트 할 수없는 추가 데이터 필드 (예 : id 또는 제목 등을 설정하여 생성되는 슬러그)를 기대하지 않습니다. 나는 깨끗한 방식으로 $ resource로 그것을하는 방법을 알지 못했지만 Restangular를 사용하여 간단하다는 것을 알았지 만 어떻게 든 가능한지는 확신합니다.

분명히 추가 필드를 무시하도록 웹 서비스를 변경할 수도 있지만 항상 가능하지는 않습니다.


3

ngResource는 최신 안정 릴리스 (현재 1.0.6)에서 약속을 반환하지 않습니다. 또한 Restangular는 ngResource보다 많은 동사를 노출시키는 것처럼 보입니다 (PUT, OPTIONS, PATCH 등을 노출시킵니다).

추가 동사가 필요하지 않고 AngularJS의 불안정한 분기 (ngResource에 대한 약속 포함)에있는 경우 ngResource를 통해 Restangular를 사용해야하는 주요 이유는 없습니다.

편안하다고 느끼는 것을 사용하십시오.


2
1.1.3 $resource약속을 반환하고 최신 PR 커밋을 사용하여 암시 될 수 있습니다. stackoverflow.com/questions/16429832/…$resource 추가 동사를 지원 하기 위해 향후 지원이 제공 됩니까? 그리고 그 일이 발생하면 Restangular는 사라지고 무적 상태가 될 것 같습니다.
Dan Kanze

@ DanKanze 추가 동사에 대한 향후 지원이 확실하지 않습니다. 대부분의 유스 케이스에는 추가 동사가 필요하지 않으므로 조만간 빌드 될 것으로 기대하지는 않지만 그렇게되지는 않습니다.
rtcherry

2
@ DanKanze-그것이 관련이 없을 것입니다. Restangular는 중첩 된 리소스를 훨씬 더 잘 지원하므로 일부 개발자에게는 필수입니다. Ng 자원이 특히 잘 지원하지 않는 것. 또한 ng-resource는 내 블로그에서 말한 RESTful 규칙을 따르지 않습니다.
Oddman

@Oddman 중첩 리소스 메이트에 대한 좋은 점, 특히 Rails 백엔드에 유용합니다.
ardochhigh

1

위의 답변에 대한 다음과 같은 저와 같은 새로운 독자에게는 그러한 생각에 관심이 있습니다.

"그런 일이 발생하면 Restangular는 사라지고 무적 상태가 될 것 같습니다."

"이 사람이 Google의 ngResource가 누락 된 모든 기능을 따라 잡기 때문에 Restangular에 대한 지원을 중단하면 3 개월 안에 어떤 일이 발생합니까?"

  • [ 2 년 전 질문 ]

제 생각에는 오픈 소스 라이브러리 의 생존을위한 유일한 보장 은 그 주위에 구축 된 커뮤니티입니다. 가장 좋은 예는 mariaDBWebScaleSQL 입니다. 둘 다 위대한 관계형 데이터베이스 관리 시스템 MySQL에 대한 갈래의 포크로 탄생했습니다.

이 글을 쓰는 시점에서 Restangular having 6699 stars and 727 forks는 이제 angularJs 2.0과 ES6를 지원하는 Restangular 2.0으로 나아가고 있습니다.


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.