我是MEAN堆栈的新手,我在路由方面遇到了一些麻烦......
我有一个名为“应用程序”的模块。 我想在服务器端使用的API是: 得到:http://localhost:3000/api/applications/(_appid) getByMakeathonId:http://localhost:3000/api/applications/makeathons/(_mkid)
应用服务
function ApplicationsService($resource) {
return $resource('api/applications/:path/:applicationId', {
path: '@path',
applicationId: '@id'
}, {
get: {
method: 'GET',
params: {
path: '',
applicationId: '@_id'
}
},
getByMakeathonId: {
method: 'GET',
params: {
path: 'makeathon',
applicationId: '@_id'
}
},
update: {
method: 'PUT'
}
});
服务器路由
app.route('/api/applications').post(applications.create);
app.route('/api/applications').all(applicationsPolicy.isAllowed)
.get(applications.list);
app.route('/api/applications/makeathon/:makeathonId').all(applicationsPolicy.isA llowed)
.get(applications.applicationByMakeathonID);
1)当我调用$ save并且对象和保存成功时,我得到的是调用.get,请求URL为:http://localhost:3000/api/applications//56f15736073083e00e86e170(未找到404) 这里的问题当然是额外的'/' - 如何摆脱它。
2)当我调用getByMakeathonId时,请求网址为:http://localhost:3000/api/applications/makeathon?id=56e979f1c6687c082ef52656 400(错误请求)
我是否配置以便获得我想要的两个请求?
10倍!
答案 0 :(得分:1)
您在请求网址中重复//
,因为您已声明应用程序资源中将有:path
,并且您提供了一个空字符串以在那里进行插值。
由于$resource
旨在提供与您的API的RESTful交互,我认为最合适的方法是使用单独的$resource
来处理应用程序和makeathons。像这样:
对于申请:
function ApplicationsService($resource) {
return $resource('api/applications/:applicationId', {
applicationId: '@id'
}, {
update: {
method: 'PUT'
}
});
}
对于makeathons:
function MakeathonsService($resource) {
return $resource('api/applications/makeathons/:makeathonId', {
makeathonId: '@id'
}
});
}
/** your server route would then be updated to
* app.route('/api/applications/makeathons/:makeathonId')...
*/