NodeJS Express - Как создать файл конфигурации для запроса POST? - PullRequest
0 голосов
/ 02 мая 2018

Я использую Express в NodeJS для принятия URL POST Request Call, после чего система ответит JSON File по запросу. Моя текущая реализация в методе Hardcode , так как всякий раз, когда я хочу добавить больше POST Request Input и определить, какой JSON File должен быть прочитан, мне нужно будет вручную добавить больше code, таких как if-else заявление в Javascript File.

Вывод My Desire:

Можно ли создать файл конфигурации с JSON или YAML, где пользователь сможет редактировать файл конфигурации всякий раз, когда он хочет добавить больше Post Request Input и добавить дополнительные условия, для которых JSON File будет открыт вместо ручного добавить еще код к Javascript File?

Мой мотив состоит в том, чтобы позволить пользователю легко вносить изменения, не касаясь кода реализации в самом Javascript File, но вместо этого им просто приходится иметь дело с файлом конфигурации.

Метод жесткого кода: (ОБНОВЛЕНО)

const postConfig = require( "./config/postConfig" )

// before allow configuration, the code is
// app.post('/api',function (req, res, next)
// after configuration, I just need to change the value in postConfig.json to determine the POST URL.
app.post(postConfig.URL,function (req, res, next) {

    // HARDCODE AREA - The POST Request Input
    // What I want is make this 'userID' is configurable/changable using JSON file. 
    // Which mean its value will based on the value at JSON file. But not HARDCODE it as 'userID'. 
    // If I want to change to 'foodID', I just change it at JSON file.
    var input = req.body.userID,


  // HARDCODE AREA - ALL OF THE IF ELSE Statement
  if(input =="1"){

    var contents = fs.readFileSync(publicdir+"/api/a.json");
    var jsonContent = JSON.parse(contents);
    res.send(jsonContent);

  }else if(input =="2"){

    var contents = fs.readFileSync(publicdir+"/api/b.json");
    var jsonContent = JSON.parse(contents);
    res.send(jsonContent);

  }else{
    res.status(404);
    res.json({
        error: {
            code: 404  + " - Invalid ID"
        }
    });
  }


});

postConfig.json:

// This allow configuration for the POST URL
{
  // I can change to 
  // "URL" : "/api" or any value i want
  "URL" : "/plus" 
}

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете создать карту, например:

var testMap = {
   1 : "a",
   2 : "b",
   3 : "c"
}

и используйте эту карту (также можно использовать как отдельный файл JSON) вместо операторов if else

var checkJSONFile = testMap[user.userID];
if(checkJSONFile){
  var contents = fs.readFileSync(publicdir+"/api/"+checkJSONFile+".json");
  var jsonContent = JSON.parse(contents);
  res.send(jsonContent);
}else{
  res.status(404);
  res.json({
    error: {
      code: 404  + " - Invalid ID"
    }
  });
}

Обновление:

var userId = req.body.userID;
req.body[<key_from_json>] = userId;
// Rest of the code follows
...