私の学生の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);
}
);
コースIDのみで電話をかけるときは、URLを/app/student/?courseid=99
にします(しません)
Student.query({courseId:cId},
function(data){
deferred.resolve(data);
}
);
代わりに私は得る:/app/student/6682831673622528
学生IDとコース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リクエストなので、GETパラメータを追加して/app/student/
をリクエストしたいと思います?one=val&two=val
これを行う方法はありますか?
パスパラメーターではなく、クエリパラメーターにパラメーターをマップする必要がある場合は、パラメーターの名前をパスに入力しないでください。例えば。学生用リソースは次のようになります。
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
他のケースも同様に機能します。パスパラメータとクエリパラメータを混同しないでください。