2016-05-03 12 views
5

Bei der Verwendung von Retrofit weiß ich, dass Sie @FieldMap Map<String, String> options verwenden können, um optionale Abfragen anzugeben.Nachrüstung von optionalen und erforderlichen Feldern

Angenommen, ich habe einen API-Anruf mit 2 Pflichtfeldern und 3 optionalen Feldern.

Wie würde ich diese Anrufe formatieren?

Wäre es so etwas wie

Call<Response> getStuff(@Query("user_id") String userId, @Query("password") String password, @FieldMap Map<String, String> options) 

sein oder würde die ganze Sache ein einzelner @FieldMap wie:

Call<Response> getStuff(@FieldMap Map<String, String> options)

und mit dieser Option würden Sie nur die erforderlichen Felder ausfüllen und Verwenden Sie dann null für die Optionals?

+0

Pls lesen http://stackoverflow.com/questions/36634926/how-to-handle-null-param-values-in-retrofit/36640325#36640325 – BNK

Antwort

9

@FieldMap und @Query Parameter unterstützen beide optionale Felder. Wie Sie bereits erwähnt haben, übergeben Sie einfach null, wenn Sie keinen Wert übergeben möchten.

+0

So zu bestätigen, wäre es am besten, nur die zu haben Rufen Sie eine einzelne '@FieldMap-Map ' mit NULL-Werten auf, wo nötig? – Orbit

+2

Ich empfehle generell explizite '@ Query'-Felder zu verwenden, da diese verwendet werden können, um Endpunkte selbst zu dokumentieren, aber eine' @ FieldMap' sollte auch die Aufgabe übernehmen. – Ryan