NodeJs Express app.get, который обрабатывает как запросы, так и параметры - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь создать службу REST. Приведенный ниже маршрут выполнит хранимую процедуру, которая выдаст результаты json

app.get('/spparam', function (req, res) {
var sql = require("mssql");

// config for your database
var id=0;
var config = {
    user: 'username',
    password: 'password',
    server: 'hostname', 
    database: 'databasename' 
};
// connect to your database
sql.connect(config, function (err) {

    if (err) console.log(err);

    // create Request object
    var request = new sql.Request();

    if(!mylib.isEmptyObject(req.query)){
        id=req.query.id;
    }else if(!mylib.isEmptyObject(req.params)){
        id=req.params["id"];
    }
    // Executing Stored Prcoedure       
    request.input('requestid', sql.Int, id)
        .execute("Request_Get_ById").then(function(recordSet) {
            //console.dir(recordsets);
            //console.dir(err);
            res.send(recordSet);
            sql.close();
        }).catch(function(err) {
            console.log(err);
        });
    });
});

Я хочу минимизировать свой код, создав один маршрут, который будет обрабатывать как запросы (/ spparam? Id = 1), так и параметры (/ spparam /: id /). Это возможно? Есть ли лучший способ справиться с тем, что мне нужно?

1 Ответ

0 голосов
/ 05 января 2019

Да, вы можете сделать это с помощью Express следующим образом:

app.get('/spparam/:id?', function (req, res) {
  const id = req.params.id || req.query.id;
  // the rest of your function, and use id without caring about whether
  // it came from params or query
  // change order if you want to give preference to query
}

Документы Express.js говорят, что он использует path-to-regexp для сопоставления маршрутов. Там вы можете увидеть эту цитату:

Параметры могут быть дополнены знаком вопроса (?), Чтобы сделать необязательный параметр.

В javascript конструкция var a = b || c присваивает значение b a, если b не false-y , и в противном случае присваивает c значение a.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...