14

我的学生 ulr 看起来像这样:

var Student = $resource('/app/student/:studentid:courseId',
    {studentid:'@id',courseId:'@cid'}
);

当我在没有参数的情况下调用它时,我希望 url 是/app/student/(有效)

var names=Student.query(
  function(){
      deferred.resolve(names);
  }
);

当我用 studentid 调用它时,我希望 url 是/app/student/?id=88(有效)

    Student.get({"id":id},
      function(data){
          deferred.resolve(data);
      }
    );

当我只用 courseid 打电话时,我希望 url 是/app/student/?courseid=99(不)

    Student.query({courseId:cId},
      function(data){
          deferred.resolve(data);
      }
    );

相反,我得到:/app/student/6682831673622528

当我同时使用学生和课程 ID 打电话时,我想:/app/student/?id=1&courseid=2 相反,我得到/app/student/12

尝试这样的 url:/app/student/:studentid&:courseid给我/app/student/1&2

不知何故,只提供 studentid 作品但 courseid 或两者都不能像我想要的那样工作。不知道我会如何期望它,因为文档中没有关于多个参数作为查询字符串的内容(有关于扩展 url 的内容,/app/student/studentid/1/courseid/2但由于它是一个 xhr 请求,我想让它请求/app/student/附加 GET 参数为?one=val&two=val

有没有办法做到这一点?

4

1 回答 1

37

如果您需要将参数映射到查询参数,而不是路径参数,则不应将参数名称放入路径中。例如,学生资源应如下所示:

var Student = $resource('/app/student/',
    {}
);

然后像这样的调用将毫无问题地工作:

 Student.get({id:12,courseId:55});//calls /app/student/?id=12&courseId=55
 Student.get({id:12});//calls /app/student/?id=12
 Student.get({courseId:55});//calls /app/student/?courseId=55

其他情况也将起作用。只是不要将路径参数与查询参数混淆。

于 2013-10-08T12:41:47.180 回答