danielgtaylor / danielgtaylor/python-betterproto

Missing data in proto maps

Offen
#442 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
1.8k
Forks
234
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

I have a theoretical proto file message defined as:
```
message Measurement {
double pressure = 1;
double temperature = 2;
}

message MeasurementMap {
map measurements = 1;
}

service WeatherStation {
rpc GetClimate (Empty) returns (MeasurementMap) {}
}
```

The problem is that if `MeasurementMap` contains a `Measurement` with all fields equal to 0, betterproto server replies with something like this:
```
{
"measurements": [
{
"key": "rpi1",
"value": {
"pressure": 1.01,
"temperature": 25.2,
}
},
{
"key": "rpi2"
}
]
}
```
Second key does not have any value next to it which makes _Postman_ throw a tantrum about "null value not having **pressure** field"

For comparison, here is the default behaviour of _grpclib_, which _Postman_ receives and parses A-OK:
```
{
"measurement": [
{
"key": "rpi1",
"value": {
"pressure": 1.01,
"temperature": 25.2
}
},
{
"key": "rpi2",
"value": {}
}
]
}
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der Proto-Definition im Issue und reproduziere eine WeatherStation-Antwort, die eine Measurement mit dem Wert null in MeasurementMap enthält. Vergleiche die Ausgabe von betterproto für den rpi2-Map-Eintrag mit der Ausgabe von grpclib und überprüfe anschließend, dass die Antwort ein leeres Wertobjekt enthält, anstatt es wegzulassen, und dass Postman es erfolgreich parst.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
grpc, python
Bereich
api
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.