javascript - 我的 API 是否应该同时包含枚举的数字和字符串表示形式?

标签 javascript c json rest enumeration

背景信息

在我正在开发的产品中,我们有很多枚举值来存储一段数据的“类型”。例如(这个东西存在于微 Controller 的 C 中):

typedef enum
{
    Temperature     = 100,
    InputVoltage    = 200,
    AverageVoltage  = 201,
    Current         = 300,
} ReadingType_t;

这使我们能够一般地处理“读数”,有点像这样:

typedef struct
{
    ReadingType_t type;
    sint32_t      value;
} Reading_t;

Reading_t readings[5];
readings[0].type = Temperature;
readings[0].value = 25; // in degrees C
readings[1].type = InputVoltage;
readings[1].value = 4321; // in milliVolts

问题

我正在尝试指定一个基于 JSON 的 API 来输出这种形式的信息。我有的一些可能的格式包括:

readings = [
    {
        "type": "Temperature",
        "value": 25
    },
    {
        "type": "InputVoltage",
        "value": 4321,
    }
]

readings = [
    {
        "type": 100,
        "value": 25
    },
    {
        "type": 200,
        "value": 4321,
    }
]

readings = [
    {
        "type": {
            "code": 100,
            "name": "Temperature"
        },
        "value": 25
    },
    {
        "type": {
            "code": 200,
            "name": "InputVoltage"
        },
        "value": 4321,
    }
]

假设

我假设 API 生成 JSON。

我假设 API 将由 Javascript 客户端应用程序使用和/或直接用于调试。

问题

我的问题是:

  1. 我应该包括枚举“code”、“title”还是两者都包括?是否有公认的做法?
  2. 如果我包含“标题”,它应该采用常规语言格式吗?即我应该使用“InputVoltage”还是“Input Voltage”?
  3. 我应该如何支持国际化与消费便利性? IE。:
    • 如果我发送数字“代码”,则不会混淆类型是什么,但必须使用查找表来获取人类可用的字符串(使用不同的表进行国际化)
    • 如果我以常规语言格式发送字符串“title”,API 必须执行国际化(这很好)但是我们不能根据该值执行任何逻辑(因为“title”会根据语言而变化,而代码不会)。

最佳答案

我强烈建议不要在输出中包含代码和名称。这是多余的,只要您想要支持数据的读/写,它就会将您与有效的代码和名称联系在一起。

我建议将名称输出到文件中。该代码是将来可能会更改的实现细节。今天你有一个 enum,明天你可能有一个哈希表。但名称是很可能不会更改的有意义的信息。

关于javascript - 我的 API 是否应该同时包含枚举的数字和字符串表示形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23378882/

相关文章:

javascript - asp.net 的 Excel 问题

c - 现代 CPU 中的分支 "anticipation"

在一整秒内每 X 毫秒在一个值之间循环的条件

c# - 我可以在 C# 中将 json 反序列化为匿名类型吗?

javascript - 构造函数中的增量变量(JS)

Javascript 代码处理流程(函数中的函数)

javascript - 多个函数调用中的点操作

c - 编写我自己的 linux shell I/O 重定向 '>' 函数

javascript - 未捕获的 token : when want to get json by ajax

android - NullPointerException解析JSON数据