2016-05-03 12 views
5

Quando si utilizza Retrofit, so che è possibile utilizzare @FieldMap Map<String, String> options per specificare query opzionali.Interventi di retrofit facoltativi e obbligatori

Dire che ho una chiamata API che aveva 2 campi obbligatori e 3 campi opzionali.

Come formattare queste chiamate?

sarebbe qualcosa di simile

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

o sarebbe l'intera cosa essere un singolo @FieldMap come:

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

e con questa opzione vuoi solo compilare i campi richiesti e quindi utilizzare null per gli optionals?

+0

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

risposta

9

@FieldMap e @Query i parametri supportano entrambi i campi facoltativi. Come hai detto, passa semplicemente null se non vuoi passare un valore.

+0

Quindi, per confermare, sarebbe meglio avere solo il chiamare un singolo '@FieldMap Map ' con valori null dove necessario? – Orbit

+2

In genere raccomando di utilizzare i campi espliciti '@ Query' in quanto possono essere usati per autocorreggere gli endpoint, ma anche un' @ FieldMap' dovrebbe fare il lavoro. – Ryan