Ресурс Angular 1.0.8 $с несколькими необязательными параметрами получения
Мой ученик ulr выглядит следующим образом:
var Student = $resource('/app/student/:studentid:courseId',
{studentid:'@id',courseId:'@cid'}
);
Когда я называю это без параметров, я хотел бы, чтобы url был /app/student/
(работает)
var names=Student.query(
function(){
deferred.resolve(names);
}
);
Когда я вызываю его со студентом, я бы хотел, чтобы url был /app/student/?id=88
(работает)
Student.get({"id":id},
function(data){
deferred.resolve(data);
}
);
Когда я звоню только с курсом, я бы хотел, чтобы url был /app/student/?courseid=99
(doesnt)
Student.query({courseId:cId},
function(data){
deferred.resolve(data);
}
);
Вместо этого я получаю: /app/student/6682831673622528
Когда я звоню с идентификатором студента и курса, мне бы хотелось: /app/student/?id=1&courseid=2
Вместо этого я получаю /app/student/12
Попробуйте что-то подобное для URL: /app/student/:studentid&:courseid
дает мне /app/student/1&2
Как бы то ни было, только работа студента, но курс или оба, не работают, как хотелось бы. Не уверен, как бы я ожидал этого, потому что в документации по поводу нескольких параметров в качестве строки запроса ничего нет (существует вопрос о расширении url с помощью /app/student/studentid/1/courseid/2
, но поскольку это запрос xhr, я бы хотел, чтобы он запрашивал /app/student/
с Параметры GET добавлены как ?one=val&two=val
Есть ли способ сделать это?
Ответы
Ответ 1
Если вам нужны параметры для сопоставления параметрам запроса, а не параметры пути, вы не должны указывать имя параметра в путь. Например. ресурс студента должен выглядеть следующим образом:
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
Другие случаи также будут работать. Просто не путайте параметры пути с параметрами запроса.