Annotation Interface HttpExchange


@Target({TYPE,METHOD}) @Retention(RUNTIME) @Documented public @interface HttpExchange
Annotation to declare a method on an HTTP service interface as an HTTP endpoint. The endpoint details are defined statically through attributes of the annotation, as well as through the input method argument types.

Supported at the type level to express common attributes, to be inherited by all methods, such as a base URL path.

At the method level, it's more common to use one of the following HTTP method specific, shortcut annotations, each of which is itself meta-annotated with HttpExchange:

Supported method arguments:

Method Argument Description Resolver
URI Dynamically set the URL for the request, overriding the annotation's url() attribute UrlArgumentResolver
HttpMethod Dynamically set the HTTP method for the request, overriding the annotation's method() attribute HttpMethodArgumentResolver
@RequestHeader Add a request header RequestHeaderArgumentResolver
@PathVariable Add a path variable for the URI template PathVariableArgumentResolver
@RequestBody Set the body of the request RequestBodyArgumentResolver
@RequestParam Add a request parameter, either form data if "Content-Type" is "application/x-www-form-urlencoded" or query params otherwise RequestParamArgumentResolver
@CookieValue Add a cookie CookieValueArgumentResolver
Since:
6.0
Author:
Rossen Stoyanchev
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    The media types for the "Accept" header.
    The media type for the "Content-Type" header.
    The HTTP method to use.
    The URL for the request, either a full URL or a path only that is relative to a URL declared in a type-level @HttpExchange, and/or a globally configured base URL.
    This is an alias for url().
  • Element Details

    • value

      @AliasFor("url") String value
      This is an alias for url().
      Default:
      ""
    • url

      @AliasFor("value") String url
      The URL for the request, either a full URL or a path only that is relative to a URL declared in a type-level @HttpExchange, and/or a globally configured base URL.

      By default, this is empty.

      Default:
      ""
    • method

      String method
      The HTTP method to use.

      Supported at the type level as well as at the method level. When used at the type level, all method-level mappings inherit this value.

      By default, this is empty.

      Default:
      ""
    • contentType

      String contentType
      The media type for the "Content-Type" header.

      Supported at the type level as well as at the method level, in which case the method-level values override type-level values.

      By default, this is empty.

      Default:
      ""
    • accept

      String[] accept
      The media types for the "Accept" header.

      Supported at the type level as well as at the method level, in which case the method-level values override type-level values.

      By default, this is empty.

      Default:
      {}