Javascript - 交换机中的API名称

时间:2017-03-24 11:34:57

标签: javascript node.js rest api

我有一个接收API调用的node.js restful服务器

let method = request.query.method;

我设置了可用API列表

enum apis {
    api_name_1,
    api_name_2
}

我想将我获得的方法切换到可用的API

switch (method) {
   case apis.api_name_1:
      response.send("You asked for api 1");
      break;
   case apis.api_name_2:
      response.send("You asked for api 2");
      break;
   default:
      response.send("This method is not supported: " + method);
      break;
}

当调用这样的API:api / process?method = api_name_2时,node.js接收为" api_name_2" (作为字符串),而apis.api_name_2等于1(枚举)。如何将api的名称转换为"可读" node.js的api代码?

由于

2 个答案:

答案 0 :(得分:1)

我不确定你想通过枚举部分实现什么。另外,在进行比较时,您只需比较开关案例中的字符串

即可

这是代码

var express = require('express')
var app = express()


app.get('/api/process', function(req, res) {
    let method = req.query.method;
    console.log(method)


    switch (method) {
        case 'apis.api_name_1':
            res.send("You asked for api 1");
            break;
        case 'apis.api_name_2':
            res.send("You asked for api 2");
            break;
        default:
            res.send("This method is not supported: " + method);
            break;
    }
})

app.listen(3000, function() {
    console.log('Magic begins on port 3000!')
})

已编辑的代码 我已经更新到下面的代码,因为现在枚举不是JS的原生,而enum是JS中的保留字,我用对象替换了你的enum实现。

var express = require('express')
var app = express()

var apiEnum = {
    api_name_1: 'apis.api_name_1',
    api_name_2: 'apis.api_name_2'
};
app.get('/api/process', function(req, res) {
    let method = req.query.method;
    console.log(method)


    switch (method) {
        case apiEnum.api_name_1:
            res.send("You asked for api 1");
            break;
        case apiEnum.api_name_2:
            res.send("You asked for api 2");
            break;
        default:
            res.send("This method is not supported: " + method);
            break;
    }
})

app.listen(3000, function() {
    console.log('Magic begins on port 3000!')
})

现在,如果点击http://localhost:3000/api/process?method=apis.api_name_2,您将获得所需的结果

答案 1 :(得分:0)

您可以使用属性访问权限运算符[]this question code = apis[method];中提到的字符串中获取值。