Angular JS : REST / CRUD 백엔드 용 GET / POST / DELETE / PUT 클라이언트의 전체 예제?
이 기사를 예로 들어 REST / CRUD 백엔드를 구현했습니다. http://coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb / . MongoDB를 로컬에서 실행 중이며 MongoLabs를 사용하지 않습니다.
ngResource 및 Factory 패턴을 사용하는 Google 자습서를 따랐으며 쿼리 (모든 항목 가져 오기), 항목 가져 오기 (GET), 항목 만들기 (POST) 및 항목 삭제 (DELETE) 작업이 있습니다. 백엔드 API가 원하는 방식으로 PUT를 구현하는 데 어려움이 있습니다 .ID (... / foo /)를 포함하고 업데이트 된 데이터도 포함하는 URL에 대한 PUT입니다.
내 서비스를 정의하는 코드가 있습니다.
angular.module('realmenServices', ['ngResource']).
factory('RealMen', function($resource){
return $resource('http://localhost\\:3000/realmen/:entryId', {}, {
query: {method:'GET', params:{entryId:''}, isArray:true},
post: {method:'POST'},
update: {method:'PUT'},
remove: {method:'DELETE'}
});
이 컨트롤러 코드에서 메서드를 호출합니다.
$scope.change = function() {
RealMen.update({entryId: $scope.entryId}, function() {
$location.path('/');
});
}
하지만 업데이트 함수를 호출하면 URL에 ID 값이 포함되지 않습니다. "/ realmen / ID"가 아니라 "/ realmen"뿐입니다.
"RealMen.prototype.update"를 추가하는 것과 관련된 다양한 솔루션을 시도했지만 여전히 entryId를 URL에 표시 할 수 없습니다. (또한 DB 필드 값만 보유한 JSON을 직접 빌드해야하는 것처럼 보입니다. POST 작업은 새 항목을 만들 때 자동으로 수행하지만 다음 항목 만 포함하는 데이터 구조는없는 것 같습니다. 단일 항목을 보거나 편집 할 때 필드 값).
예상되는 RESTful 방식으로 네 가지 동사를 모두 사용하는 예제 클라이언트 앱이 있습니까?
또한 Restangular 및 $ save를 재정의하는 또 다른 솔루션에 대한 참조를 보아 POST 또는 PUT ( http://kirkbushell.me/angular-js-using-ng-resource-in-a-more- restful-manner / ). 이 기술은 매우 빠르게 변화하고있어 사람들이 예로 사용할 수있는 좋은 참조 솔루션이없는 것 같습니다.
저는 Restangular의 제작자입니다.
이 CRUD 예제를보고 필요한 모든 URL 구성 및 $ resource 구성없이 요소를 PUT / POST / GET 할 수있는 방법을 확인할 수 있습니다. 그 외에도 구성없이 중첩 된 리소스를 사용할 수 있습니다. :).
이 plunkr 예제를 확인하십시오.
http://plnkr.co/edit/d6yDka?p=preview
README를보고 여기에서 문서를 확인할 수도 있습니다. https://github.com/mgonto/restangular
거기에없는 기능이 필요한 경우 문제를 생성하십시오. 나는 모든 AngularJS 프로젝트에이 라이브러리를 사용하기 때문에 보통 일주일 이내에 요청되는 기능을 추가합니다. :)
도움이 되었기를 바랍니다.
당신 때문에 update
사용이 방법을 PUT, {entryId: $scope.entryId}
각도가 PUT 데이터에서 생성 말해, 데이터로 간주됩니다, 당신은 추가 할 필요가 params: {entryId: '@entryId'}
당신 정의 할 때 update
, 어떤 수단을
return $resource('http://localhost\\:3000/realmen/:entryId', {}, {
query: {method:'GET', params:{entryId:''}, isArray:true},
post: {method:'POST'},
update: {method:'PUT', params: {entryId: '@entryId'}},
remove: {method:'DELETE'}
});
수정 : 업데이트 줄에 닫는 중괄호가 누락되었습니다.
이런 식으로 구현할 수 있습니다.
$resource('http://localhost\\:3000/realmen/:entryId', {entryId: '@entryId'}, {
UPDATE: {method: 'PUT', url: 'http://localhost\\:3000/realmen/:entryId' },
ACTION: {method: 'PUT', url: 'http://localhost\\:3000/realmen/:entryId/action' }
})
RealMen.query() //GET /realmen/
RealMen.save({entryId: 1},{post data}) // POST /realmen/1
RealMen.delete({entryId: 1}) //DELETE /realmen/1
//any optional method
RealMen.UPDATE({entryId:1}, {post data}) // PUT /realmen/1
//query string
RealMen.query({name:'john'}) //GET /realmen?name=john
문서 : https://docs.angularjs.org/api/ngResource/service/$resource
도움이되기를 바랍니다.
'program tip' 카테고리의 다른 글
mongodb를 임베디드 데이터베이스로 사용할 수 있습니까? (0) | 2020.12.25 |
---|---|
C #에서 while 루프를 이스케이프하는 방법 (0) | 2020.12.25 |
3 열에서 오른쪽으로 당기기, 왼쪽으로 당기기로 부트 스트랩 변경 div 순서 (0) | 2020.12.24 |
RabbitMQ가있는 셀러리 : AttributeError : 'DisabledBackend'개체에 '_get_task_meta_for'속성이 없습니다. (0) | 2020.12.24 |
IntelliJ가 sbt 프로젝트를 가져올 수 없음 (0) | 2020.12.24 |