mean.js angular - express routing

时间:2016-03-22 15:05:20

标签: express routing mean-stack meanjs

我是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倍!

1 个答案:

答案 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')...
 */