# RouteSpec

Used to generate specs with different protocols for a RouteSpec.

- Source: [`aws-appmesh/lib/route-spec.ts`](https://github.com/aws/aws-cdk/blob/v2.276.0/packages/aws-cdk-lib/aws-appmesh/lib/route-spec.ts#L391)

## Example

```ts
declare const router: appmesh.VirtualRouter;
declare const node: appmesh.VirtualNode;

router.addRoute('route-http2-retry', {
  routeSpec: appmesh.RouteSpec.http2({
    weightedTargets: [{ virtualNode: node }],
    retryPolicy: {
      // Retry if the connection failed
      tcpRetryEvents: [appmesh.TcpRetryEvent.CONNECTION_ERROR],
      // Retry if HTTP responds with a gateway error (502, 503, 504)
      httpRetryEvents: [appmesh.HttpRetryEvent.GATEWAY_ERROR],
      // Retry five times
      retryAttempts: 5,
      // Use a 1 second timeout per retry
      retryTimeout: Duration.seconds(1),
    },
  }),
});
```

## Initializer

```ts
new RouteSpec()
```

## Methods

- `bind(scope: Construct): RouteSpecConfig` — Called when the RouteSpec type is initialized.

  Can be used to enforce
  mutual exclusivity with future properties

- `grpc(options: GrpcRouteSpecOptions): RouteSpec // chainable` (static) — Creates a GRPC Based RouteSpec.

- `http(options: HttpRouteSpecOptions): RouteSpec // chainable` (static) — Creates an HTTP Based RouteSpec.

- `http2(options: HttpRouteSpecOptions): RouteSpec // chainable` (static) — Creates an HTTP2 Based RouteSpec.

- `tcp(options: TcpRouteSpecOptions): RouteSpec // chainable` (static) — Creates a TCP Based RouteSpec.
