如何在Web API结果中表示布尔类型字段

时间:2011-01-17 22:12:19

标签: xml json rest

我正在设计一个REST Web API,我不确定如何为响应的某些部分建模。

我认为输出的一个例子是最具说明性的,所以就是这样。

:此:

<packages>
  <package>
    <name>My Package, Yay!</name>
    <description>This is my package, Yay!</description>
    <features>
      <text_overlays />
      <localizable />
      <!-- Only features that are true for this package are listed -->
    </features>
  </package>
</packages>

或者这个:

<packages>
  <package>
    <name>My Package, Yay!</name>
    <description>This is my package, Yay!</description>
    <features>
      <text_overlays>True</text_overlays>
      <localizable>True</localizable>
      <audio>False</audio>
      <another_feature>False</another_feature>
      <this_aint_your_fathers_feature>False</this_aint_your_fathers_feature>
      <every_other_feature_that_exists_listed_here_too>False</every_other_feature_that_exists_listed_here_too>
    </features>
  </package>
</packages>

基本上,我有布尔字段,如果很多都是假的,那么将它们全部指定就显得过于冗长。

我正在考虑使用元素的存在来表明它是真还是假,但同样的想法我担心这将是一个不好的做法。它似乎不太可发现,但我不确定这里的可发现性有多大价值。

对这类问题有共识吗?

从消费客户的角度来看,我看不出太多差异。测试元素的存在不应该比检查元素的值复杂。

另外,我预计这些类型的参数可能会有十几种或者可能是二十种,所以不会有数百或数千种参数。

最后,我们打算将API与XML和JSON一起使用。 JSON等价物将省略属性,再次从消费客户的角度来看,我发现两者之间没什么区别。

我们有机会从一开始就正确地做到这一点,这就是我们的目标。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

如果决定归结为明示或暗示,我默认明确删除任何可能的混淆。无论您是否发送,所表示的实体都具有这些属性,但您应该包含完整的表示。

答案 1 :(得分:1)

绝对是第二种方法。这允许更大的灵活性,当解析器循环时,检查值是否为真,它可以在找到值时停止,而不必解析整个文件。

此外,JSON支持布尔数据类型。