2017-12-20 5 views
0

マイコードをAPIのエラーを見つけることができません与えている:私はhttp://localhost:3000/test/xyz/abcをしようとすると空のリクエストパラメータは、私は

xyz.js 

const testFunction = (req, res) => { 
    req.checkParams('xyz_name', 'Invalid name').notEmpty(); 
    req.sanitize('xyz_name').trim(); 

    const errors = req.validationErrors(); 
    if (errors) { 
     res.json({ 
      status: '500', 
      message: errors 
     }); 
    } else { 

     res.json({ 
      status: '200', 
      message: 'list', 
      data: req.params.xyz_name 
     }); 
    } 
}; 


module.exports = testFunction; 

app.js

app.get('/test/xyz/:xyz_name', test); 

、それが正常に動作します。私はhttp://localhost:3000/test/xyzを入力するときしかし、それは私が

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Error</title> 
    </head> 
    <body> 
     <pre>Cannot GET /test/xyz</pre> 
    </body> 

は何もありエラー与える、私はそれを動作させるために私のコードで行方不明ですか?あなたのルートがxyz_nameパラメータを必要とするように構成されているため

+4

「xyz_name」は、それが必要とするオプションの場合、「?」が後 –

+1

おかげで、それが働きました。あなたは将来の読者を助けることができるように、これを答えとして提供できますか? –

+0

ちょっと!それは喜んで助けた! –

答えて

3

オプションのを持っている場合パラメータはExpress.jsで?で指定する必要があります。

/test/xyz/:xyz_name/test/xyz/testと一致しますが、/test/xyzとは一致しません。基本的には、必要なパラメータにxyz_nameを設定しています。何も提供されなければ、それは失敗するでしょう。

/test/xyz/:xyz_name?は、/test/xyz/test/test/xyzと一致します。これはオプションのパラメータにxyz_nameを設定しています。何も提供されなければ、ルートは依然としてヒットします。

1

です。提供されていないので、適切なルートマッチを見つけることができません。これは予想されます。

あなたはパラメータが用意されているかどうか、要求を処理するために、あなたのルートを希望した場合、私はあなたがそうのようなパラメータをオプションにする必要があります信じる:

app.get('/test/xyz/:xyz_name?', test); 
関連する問題