2016-04-25 16 views
1

まず、この問題を解決するために何かを見つけられませんでした。それが重複している場合は申し訳ありません。私は私の急行に持ってNode.jsのエクスプレスアプリケーションとの競合

は+アプリにこのような2つのエンドポイントのNode.js:

// Gets a tweet by unique id 
app.get('/tweets:id', function(req, res, next) { 
    // Response management 
}); 

// Gets mentions of user unique id 
app.get('/tweets/mentions', function(req, res, next) { 
    // Response management 
}); 

問題をにGETの嘆願書を要求する」、「/つぶやき/言及し、」によって最初に出席していることです/ tweets /:id "以降、" /つぶやき/言及 "、競合しています。

エンドポイントの宣言順序を変更しようとしましたが、常に両方のエンドポイントが要求を受け付けています。

はまた、私は「を言及:: /ツイート」のようなものを試してみましたが、私は経由でエンドポイントにアクセスする必要がを「/つぶやき/言及」、と私は可能な方法があると。しています

どうすればこの競合を解決できますか?おかげさまで

+0

つの質問:どのようにあなたが一意のIDを渡すんエンドポイント「/ツイート/ /言及」? –

+0

適切なRESTデザインを使用するには、 '/ mentions'を使用してください。 –

+0

@MatteoTosi私は1つのヘッダーにデータベースのユーザーIDを検索できるJWTを持っています。 – rpfc

答えて

0

ハンドラの1つにnext()を使用していますか? 、そのうちの一つが呼び出された場合、あなたの例のように、

next()パスは、次の一致するルートに制御し、その中にあなたがnext()を呼んで、もう一方が呼び出されます。

複数の基本パスがある場合は、「ルーター」を使用することをお勧めします。これは、基本パスを整理しておくことに役立ちます。

+0

あなたの応答をありがとう、ルータを使用していないnext()を使用していない私のためのソリューションでした。 – rpfc

0

「tweet by id」ハンドラの値req.params.idをチェックすることで、競合を解決できます。

+0

ありがとう、私はこれ以上の問題を考慮します! – rpfc

0

他のルートと同じベースパスを使用しないように、追加のパラメータを持つルートについては、常に推奨されます。

あなたのために働くことができような何か:

app.get('/tweets/users/:id', function(req, res, next) { 
    // Response management 
}); 

// Gets mentions of user unique id 
app.get('/tweets/mentions', function(req, res, next) { 
    // Response management 
}); 
+0

ありがとうございます、あなたの貢献のおかげで答えが有効です、私はこれらのすべての答えを考慮に入れます。 – rpfc