2016-03-22 13 views
0

私はMEANスタックを初めて使っています。ルーティングに問題があります。average.js angular - express routing

私は「アプリケーション」というモジュールを持っています。私は、サーバー側で必要 APIは以下のとおりです。 GET: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' 
     } 
    }); 

サーバI「は何

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とオブジェクトをコールして保存すると成功するulは.getの呼び出しがあり、リクエストURLはhttp://localhost:3000/api/applications//56f15736073083e00e86e170(404が見つかりません) ここでの問題はもちろん、余分な '/'です。どうすればそれを取り除くことができますか?

2)私はgetByMakeathonIdを呼び出すときに、要求URLは次のとおりです。http://localhost:3000/api/applications/makeathon?id=56e979f1c6687c082ef52656 400(不正なリクエスト)

私は私がしたい2つの要求を取得しますように、私は設定しませんか?

10x!

答えて

1

アプリケーションリソースに:pathが存在すると宣言し、そこに補間する空の文字列を指定しているため、リクエストURLに//が繰り返されています。

$resourceは、APIとRESTfulなやりとりを提供するためのものです。アプリケーションとメイクを処理するには、$resourceを別々にするのが最も適切な方法だと思います。

アプリケーションの場合:makeathonsについては

function ApplicationsService($resource) { 
    return $resource('api/applications/:applicationId', { 
    applicationId: '@id' 
    }, { 
    update: { 
     method: 'PUT' 
    } 
    }); 
} 

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