Package groovy.http

# Annotation Interface HttpBuilderClient

@Incubating @Retention(SOURCE) @Target(TYPE) public @interface HttpBuilderClient
Marks an interface as a declarative HTTP client. An implementation class is generated at compile time via AST transform, using `HttpBuilder` for request execution.

Example:

     @HttpBuilderClient('https://api.example.com')
     interface MyApi {
         @Get('/users/{id}')
         Map getUser(String id)
     }

     def api = MyApi.create()
     def user = api.getUser('123')

Since:
  6.0.0

- ## Required Element Summary

  Required Elements
  Modifier and Type
  Required Element
  Description
  `String`
  `value`
  The base URL for all requests.

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `boolean`
  `confineToBaseUri`
  Whether requests are confined to the base URL.
  `int`
  `connectTimeout`
  Connection timeout in seconds.
  `boolean`
  `followRedirects`
  Whether to follow HTTP redirects.
  `int`
  `requestTimeout`
  Request timeout in seconds.

- ## Element Details

  - ### value

    String value
    The base URL for all requests.

- - ### connectTimeout

    int connectTimeout
    Connection timeout in seconds. Default 0 means no timeout.
    Default:
      0

  - ### requestTimeout

    int requestTimeout
    Request timeout in seconds. Default 0 means no timeout.
    Default:
      0

  - ### followRedirects

    boolean followRedirects
    Whether to follow HTTP redirects. Default is false.
    Default:
      false

  - ### confineToBaseUri

    boolean confineToBaseUri
    Whether requests are confined to the base URL. When `true`, a request whose resolved URI leaves the base URL's origin (scheme, host, or effective port) or its path prefix is rejected with a `SecurityException`. This covers a request template with an absolute path or `..` traversal, as well as an alternate base URL supplied to the generated `create(String)` / `create(Closure)` factory that points at a different host. Default is false.
    Default:
      false