Lorawan-stack: JSON 响应中的枚举呈现不一致

创建于 2020-03-29  ·  5评论  ·  资料来源: TheThingsNetwork/lorawan-stack

概括

参考资料: https ://github.com/TheThingsNetwork/lorawan-stack/issues/2047

NS 为mac_settings字段中的枚举返回的值不一致。 有些 NS 返回原始值,有些则返回字符串表示形式。

重现步骤

  1. 设置mac_settings.rx1_delay.value
// request
{
   "end_device":{
      "mac_settings":{
         "rx1_delay":{
            "value":5 // or 'RX_DELAY_5'
         }
      }
   },
   "field_mask":{
      "paths":[
         "mac_settings.rx1_delay.value",
      ]
   }
}

// response
{
   ...
   "mac_settings":{
      "rx1_delay":{
         "value":5
      },
   }
}

// Note, regardless of what you send as the value for mac_settings.rx1_delay.value you always get the raw enum value.
  1. 设置mac_settings.ping_slot_periodicity.value
// request

{
   "end_device":{
      "mac_settings":{
         "ping_slot_periodicity":{
            "value": 1 // or 'PING_EVERY_2S'
         }
      }
   },
   "field_mask":{
      "paths":[
         "mac_settings.ping_slot_periodicity.value"
      ]
   }
}

// response

{
   "mac_settings":{
      "ping_slot_periodicity":{
         "value":"PING_EVERY_2S"
      }
   }
}

// Again, regardless of what you send you always get the string representation of the value.

你现在看到了什么?

mac_settings枚举字段的值不一致

你想看到什么?

所有值都应以相同的格式返回(原始/字符串)

环境

v3.7.0-rc2

你建议如何实施?

我想首先我们必须就格式达成一致。 然后就是调整https://github.com/TheThingsNetwork/lorawan-stack/blob/master/api/lorawan.protohttps://github.com/TheThingsNetwork/lorawan-stack/blob/master/pkg的问题

你可以自己做这个并提交一个拉请求吗?

是的,但需要来自@rvolosatovs @johanstokking @htdvisser的输入

bummajor compaapi

最有用的评论

非常适合 V4

所有5条评论

我们需要什么输入( @rvolosatovs @johanstokking @htdvisser)? 这个问题是否缺少discussion标签?

FTR,我认为这取决于我们正在谈论的字段,但对于 LoRaWAN 特定的 MAC 内容,我认为我们应该只使用数字,因为这符合规范( PING_EVERY_2S的 Ping 槽周期不是在规范中定义,但是1之一是)

不幸的是,这不是我们可以改变的,因为它违反了我们的 API 兼容性承诺,所以这绝对不是三月份的事情。

目前确实有多种方法可以呈现枚举。 例如, MACVersion可以呈现为"MAC_V1_0_2"3 (均符合 jsonpb)或"1.0.2" (使用 TTN 的纵梁,不符合)。 过去我们在渲染 JSON 时犯了使用第三个 ( "1.0.2" ) 的错误。 我们不应该这样做,但是如果不破坏我们的 API,我们就不能再改变它了。

为了尽可能兼容,我们接受请求消息中的所有形式,但我们返回的内容不能再轻易更改。

将来(使用 goproto v2 API)我们可能会在Accept标头中添加对扩展的支持,类似于 Github 的做法。 然后可以使用此扩展来告诉服务器应该如何呈现枚举(例如零字段)。

关闭,因为我们不会解决这个问题

我认为我们不应该立即将其视为一种错误修正。 让我们将它保留在积压工作中,看看我们是否可以在将来修复它。

非常适合 V4

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

htdvisser picture htdvisser  ·  4评论

rvolosatovs picture rvolosatovs  ·  9评论

johanstokking picture johanstokking  ·  8评论

ecities picture ecities  ·  5评论

ecities picture ecities  ·  5评论