参考资料: https ://github.com/TheThingsNetwork/lorawan-stack/issues/2047
NS 为mac_settings
字段中的枚举返回的值不一致。 有些 NS 返回原始值,有些则返回字符串表示形式。
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.
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.proto和https://github.com/TheThingsNetwork/lorawan-stack/blob/master/pkg的问题
是的,但需要来自@rvolosatovs @johanstokking @htdvisser的输入
我们需要什么输入( @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
最有用的评论
非常适合 V4