Retrofit 2 dynamic header
In Retrofit 2, when we need to add additional headers, we would just add an implementation of the  Interceptor.
But sometimes, we only need to add a particular header for one API call, and the value is set dynamically at runtime. It's a bit tedious to add another interceptor just for that call.
The @Header annotation is really handy for this case. So we can pass a parameter annotated with @Header to the API call method. And Retrofit will take care of it.
Let's take look at an example:
@GET("/weather")
Observable<WeatherInfo> getWeather(@Header("foo") String value, Location location);
That would allow us to pass a String value as a request header for the getWeather API call. If the value is null, the foo header will just be omitted from the request.