@Documented @Retention(value=RUNTIME) @Target(value={FIELD,PARAMETER,TYPE,METHOD,ANNOTATION_TYPE}) @Repeatable(value=Headers.class) @Bindable @Inherited public @interface Header
An annotation that can be applied to method argument to indicate that the method argument is bound from an HTTP header This also can be used in conjunction with @Headers to list headers on a client class that will always be applied.
The following example demonstrates usage at the type level to declare default values to pass in the request when using the Client
annotation:
@Header(name = "X-Username", value = "Freddy"), @Header(name = "X-MyParam", value = "${foo.bar}") @Client('/users') interface UserClient { }
When declared as a binding annotation the @Header
annotation is declared on each parameter to be bound:
@Get('/user') User get(@Header('X-Username') String username, @Header('X-MyParam') String myparam) { return new User(username, myparam); }
@AliasFor(annotation=Bindable.class, member="value") public abstract String value
@AliasFor(annotation=Bindable.class, member="value") public abstract String name
@AliasFor(annotation=Bindable.class, member="defaultValue") public abstract String defaultValue
Bindable.defaultValue()