Referensi: https://github.com/TheThingsNetwork/lorawan-stack/issues/2047
Nilai yang dikembalikan oleh NS untuk enum dalam bidang mac_settings
tidak konsisten. Beberapa untuk beberapa NS mengembalikan nilai mentah dan untuk yang lain representasi string dikembalikan.
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.
Nilai tidak konsisten untuk bidang enum mac_settings
Semua nilai harus dikembalikan dalam format yang sama (mentah/string)
v3.7.0-rc2
Saya kira pertama-tama kita harus menyetujui formatnya. Kemudian tinggal menyesuaikan https://github.com/TheThingsNetwork/lorawan-stack/blob/master/api/lorawan.proto dan https://github.com/TheThingsNetwork/lorawan-stack/blob/master/pkg /ttnpb/lorawan.go
Ya, tapi butuh masukan dari @rvolosatovs @johanstokking @htdvisser
Masukan apa yang dibutuhkan dari kami ( @rvolosatovs @johanstokking @htdvisser)? Apakah masalah ini tidak memiliki label discussion
?
FTR, saya pikir itu tergantung pada bidang apa yang sedang kita bicarakan, tetapi untuk hal-hal MAC khusus LoRaWAN, saya pikir kita harus menggunakan nomornya saja, karena itu sesuai dengan spesifikasi (periodisitas slot Ping PING_EVERY_2S
tidak didefinisikan dalam spesifikasi, namun salah satu dari 1
adalah)
Sayangnya ini bukan sesuatu yang bisa kami ubah begitu saja, karena akan melanggar komitmen kompatibilitas API kami, jadi ini jelas bukan sesuatu untuk bulan Maret.
Saat ini memang ada beberapa cara untuk membuat enum. Misalnya, MACVersion
dapat dirender sebagai "MAC_V1_0_2"
, 3
(keduanya sesuai dengan jsonpb) atau sebagai "1.0.2"
(dengan stringer TTN, tidak sesuai). Di masa lalu kami telah membuat kesalahan dengan menggunakan yang ketiga ( "1.0.2"
) saat merender JSON. Kami seharusnya tidak melakukan itu, tetapi kami tidak dapat mengubahnya lagi tanpa merusak API kami.
Agar serasi mungkin, kami menerima semua formulir dalam pesan permintaan, tetapi apa yang kami kembalikan tidak dapat dengan mudah diubah lagi.
Di masa mendatang (dengan goproto v2 API) kami mungkin dapat menambahkan dukungan untuk ekstensi di header Accept
, mirip dengan cara Github melakukan ini. Ekstensi ini kemudian dapat digunakan untuk memberi tahu server bagaimana enum (dan misalnya bidang nol) harus dirender.
ditutup karena kami tidak akan memperbaikinya
Saya tidak berpikir kita harus segera mengabaikan ini sebagai perbaikan biasa. Mari kita simpan di backlog dan lihat apakah kita bisa memperbaikinya di masa depan.
Bagus untuk V4
Komentar yang paling membantu
Bagus untuk V4