@Header

The {@link oaj.http.annotation.Header @Header} annotation can be applied to arguments of @RemoteMethod-annotated methods to denote that they are header parameters on the request.

- {@link oaj.http.annotation.Header}
  - {@link oaj.http.annotation.Header#_default() _default} - Default value if not present.
  - {@link oaj.http.annotation.Header#_enum() _enum} - Input validation. Must match one of the values.
  - {@link oaj.http.annotation.Header#allowEmptyValue() allowEmptyValue} - Input validation. Allow empty value.
  - {@link oaj.http.annotation.Header#collectionFormat() collectionFormat} - How collections of items are formatted.
  - {@link oaj.http.annotation.Header#exclusiveMaximum() exclusiveMaximum} - Input validation. Whether maximum is exclusive.
  - {@link oaj.http.annotation.Header#exclusiveMinimum() exclusiveMinimum} - Input validation. Whether minimum is exclusive.
  - {@link oaj.http.annotation.Header#format() format} - The schema type format.
  - {@link oaj.http.annotation.Header#items() items} - The schema of items in a collection.
  - {@link oaj.http.annotation.Header#maximum() maximum} - Input validation. Maximum numeric value.
  - {@link oaj.http.annotation.Header#maxItems() maxItems} - Input validation. Maximum number of items in a collection.
  - {@link oaj.http.annotation.Header#maxLength() maxLength} - Input validation. Maximum length of a string.
  - {@link oaj.http.annotation.Header#minimum() minimum} - Input validation. Minimum numeric value.
  - {@link oaj.http.annotation.Header#minItems() minItems} - Input validation. Minimum number of items in a collection.
  - {@link oaj.http.annotation.Header#minLength() minLength} - Input validation. Minimum length of a string.
  - {@link oaj.http.annotation.Header#multipleOf() multipleOf} - Input validation. Number must be a multiple of.
  - {@link oaj.http.annotation.Header#name() name} - Header name.
  - {@link oaj.http.annotation.Header#pattern() pattern} - Input validation. Must match regular expression.
  - {@link oaj.http.annotation.Header#required() required} - Input validation. Header must be present.
  - {@link oaj.http.annotation.Header#serializer() serializer} - Override the part serializer.
  - {@link oaj.http.annotation.Header#skipIfEmpty() skipIfEmpty} - Don't add if value is null or empty.
  - {@link oaj.http.annotation.Header#type() type} - The schema type.
  - {@link oaj.http.annotation.Header#uniqueItems() uniqueItems} - Input validation. Collections must contain unique items only.

##### Example:

@Remote(path="/myproxy") public interface MyProxy { // Explicit names specified for HTTP headers. // pojo will be converted to UON notation (unless plain-text parts enabled). @RemoteMethod(path="/mymethod1") String myProxyMethod1(@Header("Foo") String foo, @Header("Bar") MyPojo pojo); // Multiple values pulled from a NameValuePairs object. // Same as @Header("*"). @RemoteMethod(path="/mymethod2") String myProxyMethod2(@Header NameValuePairs nameValuePairs); // Multiple values pulled from a Map. // Same as @Header("*"). @RemoteMethod(path="/mymethod3") String myProxyMethod3(@Header Map<String,Object> map); // Multiple values pulled from a bean. // Same as @Header("*"). @RemoteMethod(path="/mymethod4") String myProxyMethod4(@Header MyBean myBean); }

Single-part arguments (i.e. those with name != "*") can be any of the following types:

- Any serializable POJO - Converted to a string using the {@link oaj.httppart.HttpPartSerializer} registered with the RestClient ({@link oaj.oapi.OpenApiSerializer} by default) or associated via the {@link oaj.http.annotation.Header#serializer() @Header(serializer)} annotation.

Multi-part arguments (i.e. those with name == "*" or empty) can be any of the following types:

- NameValuePairs - Serialized as individual headers.
- Map - Converted to key-value pairs.
  Values serialized using the registered {@link oaj.httppart.HttpPartSerializer} ({@link oaj.oapi.OpenApiSerializer} by default).
- Bean - Converted to key-value pairs.
  Values serialized using the registered {@link oaj.httppart.HttpPartSerializer} ({@link oaj.oapi.OpenApiSerializer} by default).

See the link below for information about supported data types in OpenAPI serialization.

- {@doc juneau-marshall.OpenApiDetails.Serializers}