5

REST エンドポイントを公開する必要があります。3 つのパラメーターがあり、それらをオプションにする方法です。要件は、これらのパラメーターのいずれかで機能する必要があることです。

例えばhttp://server:port/v1/api/test-api/userId/UnameName/userEmail

app.get('v1/api/test-api/:userId/:userName/:userEmail', function(req, res){

});

3 つのパラメーターすべてを渡して呼び出すと、問題なく動作します。しかし、userId またはこれら 3 つのパラメーターのいずれかのみを渡すことで機能させたいと考えています。より少ないパラメーターを渡すと、エラーが発生しますCannot GET /v1/api/test-api/test5/123

エンドポイントを公開する際にパラメータをオプションにする方法は?

4

4 に答える 4

8

より良い解決策は、GET パラメータを使用することです。

http://server:port/v1/api/test-api?userId=123&userName=SomeKittens&userEmail=kittens%40example.com

次に、次のようにルートを定義できます。

app.get('v1/api/test-api', function(req, res){
  var userName = req.query.userName;
  var userEmail = req.query.userEmail;
  var userId = req.query.userId;

  // Do stuff
});

含めることを忘れないでくださいbody-parser

于 2014-06-10T01:32:26.073 に答える
1

別の方法として、入力リクエストパラメーターで受け取ったものを確認し、それに応じて検証を行うか、値を取得することができます..

app.post('/v1/api/test-api', function(req, res) {
    var parameters = [];
    if(req.body.userName !== undefined) {
         //DO SOMEHTING
         parameters.push({username: req.body.userName});
    }
    if(req.body.userId !== undefined) {
        //DO SOMEHTING

       parameters.push({userId: req.body.userId});
   }
   if(req.body.userEmail !== undefined) {
      //DO SOMEHTING
      parameters.push({userEmail: req.body.userEmail});
   }

   res.json({receivedParameters: parameters});

});
于 2015-09-16T10:04:19.487 に答える