当前位置: 首页 > 知识库问答 >
问题:

REST API状态为整数还是字符串?

顾嘉良
2023-03-14

我和我的同事正在研究REST API。我们一直在争论资源/项的状态应该是字符串还是整数--我们都需要阅读、理解和修改这个资源(使用单独的应用程序)。由于这是一个非常笼统的主题,谷歌并没有帮助解决这一争论。我想知道你的经验是什么,哪种方式更好。

例如,假设我们有作业资源,它可以通过URI http://example.com/api/jobs/someid访问,它具有以下JSON表示形式,存储在NoSQL DB中:

JOB A:
{
   "id": "someid",
   "name": "somename",
   "status": "finished"  // or "created", "failed", "compile_error"
}

所以我的问题是-也许它应该更像是跟随?

JOB B:
{
   "id": "someid",
   "name": "somename",
   "status": 0  // or 1, 2, 3, ...
}
  • 状态==50-表示网络组件X有问题,
  • 状态>100-表示某些多个特殊情况。

当你有数字的时候,你就不需要为它们编所有那些字符串名了。那么在你看来哪种方式是最好的呢?也许我们需要多个字段(这会让事情有点混乱):

JOB C:
{
   "id": "someid",
   "name": "somename",
   "status": 0, // or 1, 2, 3...
   "error_type": "compile_error",
   "error_message": "You coding skill has failed. Please go away"
}

共有1个答案

南宫炜
2023-03-14

就我个人而言,我将考虑将你提到的两种方法结合起来处理这种情况。我会将状态作为整数存储在数据库中,但会创建一个枚举或常量类来将状态名映射到数值状态值。

例如(在C#中):

public enum StatusType
{
    Created = 0,
    Failed = 1,
    Compile_Error = 2,

    // Add any further statuses here.
}

然后,您可以将数据库中存储的数字状态转换为该枚举的实例,并在整个代码中使用该实例进行决策。

StatusType status = (StatusType) storedStatus;

if(status == StatusType.Created)
{
    // Status is created.
}
else
{
   // Handle any other statuses here.
}

如果你是迂腐的,你也可以将这些映射存储在你的DB中。

对于通过API进行访问,您可以根据您的需求选择任何一种方式。您甚至可以返回一个包含状态号和状态文本的结果:

object YourObject
{
    status_code = 0,
    status = "Failed"
}

您还可以创建一个API来从代码中检索状态名。但是,从性能的角度来看,在API中同时返回状态代码和名称将是最好的。

 类似资料:
  • 问题内容: 我有一个具有几个命​​令的应用程序。当您键入某个命令时,您必须输入有关某物/某人的其他信息。现在,根据情况,信息必须严格为整数或字符串。 但是,无论您使用raw_input()在Python中键入的内容实际上是一个字符串,无论如何,更具体地讲,我很快会不加尝试地……除非查看变量是否由数字或字符组成? 问题答案: 我认为您有两种选择: 只需尝试将其转换为,但要捕获异常: except V

  • 问题内容: 我想要最简单的故障安全测试来检查JavaScript中的字符串是否为正整数。 对于各种非整数值返回true,并且为浮点字符串返回整数,例如“ 2.5”。而且我也不想使用某些jQuery插件。 问题答案: 为您提供两个答案: 基于解析 正则表达式 请注意,在两种情况下,我都将“正整数”解释为包括,即使它不是正数。如果您不愿意,我会提供注释。 基于解析 如果希望它是在合理值范围内的归一化十

  • 我想要最简单的故障安全测试来检查JavaScript中的字符串是否为正整数。 为所有类型的非整数值返回true,为浮点字符串返回整数,如“2.5”。我也不想使用jQuery插件。

  • 问题内容: 我有一个带有参数的方法。 在这种方法中,我完全知道在“ o”中存在一个不为空的值。无需检查或执行其他操作。我必须把它当作一个对象来对待。 只是好奇-什么便宜?将其投放或使用?还是按时间/ CPU /内存价格相同? 更新:该方法可以接受,因为它是接口的实现。无法更改参数类型。 而且根本不可能。我只是想说我不需要检查它是否为空或为空。就我而言,总是有一个非空字符串。 问题答案: 强制转换为

  • 问题内容: 有谁知道如何检查JavaScript中的变量是数字还是字符串? 问题答案: 如果你处理的文字符号,而不是构造函数,你可以使用typeof运算。 如果您是通过构造函数创建数字和字符串,比如,你应该记住,可能会返回了。 检查类型的更简单的方法可能是利用在underscore.js中找到的方法可以在[此处找到带注释的源代码), 这将返回以下布尔值:

  • 问题内容: 我正在尝试确定字符串数组中的特定项目是否为整数。 我是形式上的中缀表达式,然后尝试将结果数组拆分为两个数组;一个用于整数,一个用于运算符,同时丢弃括号和其他杂项。做到这一点的最佳方法是什么? 我以为我也许可以找到一种方法或某种方法,但是没有运气。 问题答案: 最幼稚的方式是遍历String并确保所有元素对于给定的基数都是有效数字。由于你必须至少查看一次每个元素,因此这将尽可能地提高效率