如何在RESTful API中使用嵌套资源

How to use nested resources in RESTful API?

本文关键字:嵌套 资源 API RESTful      更新时间:2023-09-26

我是REST API的新手。请帮助我列出所有相册,按用户名排序,如果单击某个用户,则显示该用户的所有相册。这是我迄今为止编写的代码,但它并没有向我显示正确的内容。

这些是资源:
http://jsonplaceholder.typicode.com/users
http://jsonplaceholder.typicode.com/albums

这是我写的代码:

var app = angular.module('christmas', ['ngResource']);
app.controller('SecretOperations', ['$scope', '$resource', function($scope, $resource) {
            $scope.loadPosts = function() {
                var postingsResource = $resource('http://jsonplaceholder.typicode.com/albums/', {});
                $scope.postings = postingsResource.query();
                postingsResource.query().$promise.then(function(postings){
                    $scope.postings = postings;
                });
                var useri = $scope.postings.userId;
                var numeUser = $resource('http://jsonplaceholder.typicode.com/users?id=idu', { idu : useri });
                $scope.off = numeUser.query();
            };
            $scope.loadPosts();
                        
        }]);
<!DOCTYPE HTML>
<html  ng-app="christmas">
<head></head>
<body >
      <div class="row" ng-controller="SecretOperations">
                <div class="col-md-3 text-center" ng-repeat="album in postings">
                    <div>
                        
                        <p class="text-muted">Album title: {{ album.title }}</p>
                        <p ng-repeat="offof in off"> Author name : {{ offof.name }} </p>
                    </div>
                </div>
        </div>    
    <script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular-resource.min.js"></script>
    <script src="http://code.angularjs.org/1.2.13/angular.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.8/angular-ui-router.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular-animate.js"></script>
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.14.3.js"></script>
    <script src="app.js"></script>
</body>
</html>

感谢

您没有正确使用$resource服务。我建议使用$promise属性:

postingsResource.query().$promise.then(function (postings) {
    $scope.postings = postings;
});

nameUser.get().$promise.then(function (user) {
    $scope.authorn = user;
});

以后,请在在此提出标准问题之前仔细阅读文档:

https://docs.angularjs.org/api/ngResource/service/&dollar;资源

附言:在你的情况下,你可能需要将两个资源承诺链接起来,因为你需要第一个资源在第二个资源中的结果。