Lorawan-stack: Render enum tidak konsisten dalam respons JSON

Dibuat pada 29 Mar 2020  ·  5Komentar  ·  Sumber: TheThingsNetwork/lorawan-stack

Ringkasan

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.

Langkah-langkah untuk Reproduksi

  1. Setel 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. Setel 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.

Apa yang kamu lihat sekarang?

Nilai tidak konsisten untuk bidang enum mac_settings

Apa yang ingin Anda lihat sebagai gantinya?

Semua nilai harus dikembalikan dalam format yang sama (mentah/string)

Lingkungan

v3.7.0-rc2

Bagaimana Anda mengusulkan untuk menerapkan ini?

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

Bisakah Anda melakukannya sendiri dan mengajukan Permintaan Tarik?

Ya, tapi butuh masukan dari @rvolosatovs @johanstokking @htdvisser

bummajor compaapi

Komentar yang paling membantu

Bagus untuk V4

Semua 5 komentar

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

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

adriansmares picture adriansmares  ·  8Komentar

johanstokking picture johanstokking  ·  3Komentar

w4tsn picture w4tsn  ·  6Komentar

thinkOfaNumber picture thinkOfaNumber  ·  4Komentar

johanstokking picture johanstokking  ·  6Komentar