2016-03-22 2 views
0

Я новичок в стек MEAN и у меня возникают некоторые проблемы с маршрутизацией ...mean.js угловатого - выражают маршрутизации

У меня есть модуль под названием «приложение». 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), что я» m получение, когда я вызываю $ save, а объект и сохранение - это успех ul, есть запрос для .get, а URL-адрес запроса: http://localhost:3000/api/applications//56f15736073083e00e86e170 (404 не найдено) проблема здесь, конечно же, является дополнительным '/' - как я могу избавиться от него.

2), когда я звоню getByMakeathonId, запрос URL является: http://localhost:3000/api/applications/makeathon?id=56e979f1c6687c082ef52656 400 (Bad Request)

я могу настроить так, что я получу два запроса, которые я хочу?

10x!

ответ

1

Вы получаете повторный // в URL-адресе вашего запроса, потому что вы заявили, что в вашем ресурсе приложений будет :path, и вы предоставляете пустую строку для интерполяции там.

Поскольку $resource предназначен для обеспечения взаимодействия RESTful с вашим API, я думаю, что наиболее подходящий подход состоял бы в том, чтобы иметь отдельные приложения $resource s для работы с приложениями и макетами. Что-то вроде этого:

Для применений:

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')... 
*/ 
+0

Это помогает мне решить мою другую проблему – Sam

Смежные вопросы