Interface RestApiAttributes
- All Superinterfaces:
software.amazon.jsii.JsiiSerializable
- All Known Implementing Classes:
RestApiAttributes.Jsii$Proxy
@Generated(value="jsii-pacmak/1.104.0 (build e79254c)",
date="2024-11-21T06:34:02.655Z")
@Stability(Stable)
public interface RestApiAttributes
extends software.amazon.jsii.JsiiSerializable
Attributes that can be specified when importing a RestApi.
Example:
import software.constructs.Construct; import software.amazon.awscdk.App; import software.amazon.awscdk.CfnOutput; import software.amazon.awscdk.NestedStack; import software.amazon.awscdk.NestedStackProps; import software.amazon.awscdk.Stack; import software.amazon.awscdk.services.apigateway.Deployment; import software.amazon.awscdk.services.apigateway.Method; import software.amazon.awscdk.services.apigateway.MockIntegration; import software.amazon.awscdk.services.apigateway.PassthroughBehavior; import software.amazon.awscdk.services.apigateway.RestApi; import software.amazon.awscdk.services.apigateway.Stage; /** * This file showcases how to split up a RestApi's Resources and Methods across nested stacks. * * The root stack 'RootStack' first defines a RestApi. * Two nested stacks BooksStack and PetsStack, create corresponding Resources '/books' and '/pets'. * They are then deployed to a 'prod' Stage via a third nested stack - DeployStack. * * To verify this worked, go to the APIGateway */ public class RootStack extends Stack { public RootStack(Construct scope) { super(scope, "integ-restapi-import-RootStack"); RestApi restApi = RestApi.Builder.create(this, "RestApi") .cloudWatchRole(true) .deploy(false) .build(); restApi.root.addMethod("ANY"); PetsStack petsStack = new PetsStack(this, new ResourceNestedStackProps() .restApiId(restApi.getRestApiId()) .rootResourceId(restApi.getRestApiRootResourceId()) ); BooksStack booksStack = new BooksStack(this, new ResourceNestedStackProps() .restApiId(restApi.getRestApiId()) .rootResourceId(restApi.getRestApiRootResourceId()) ); new DeployStack(this, new DeployStackProps() .restApiId(restApi.getRestApiId()) .methods(petsStack.methods.concat(booksStack.getMethods())) ); CfnOutput.Builder.create(this, "PetsURL") .value(String.format("https://%s.execute-api.%s.amazonaws.com/prod/pets", restApi.getRestApiId(), this.region)) .build(); CfnOutput.Builder.create(this, "BooksURL") .value(String.format("https://%s.execute-api.%s.amazonaws.com/prod/books", restApi.getRestApiId(), this.region)) .build(); } } public class ResourceNestedStackProps extends NestedStackProps { private String restApiId; public String getRestApiId() { return this.restApiId; } public ResourceNestedStackProps restApiId(String restApiId) { this.restApiId = restApiId; return this; } private String rootResourceId; public String getRootResourceId() { return this.rootResourceId; } public ResourceNestedStackProps rootResourceId(String rootResourceId) { this.rootResourceId = rootResourceId; return this; } } public class PetsStack extends NestedStack { public final Method[] methods; public PetsStack(Construct scope, ResourceNestedStackProps props) { super(scope, "integ-restapi-import-PetsStack", props); IRestApi api = RestApi.fromRestApiAttributes(this, "RestApi", RestApiAttributes.builder() .restApiId(props.getRestApiId()) .rootResourceId(props.getRootResourceId()) .build()); Method method = api.root.addResource("pets").addMethod("GET", MockIntegration.Builder.create() .integrationResponses(List.of(IntegrationResponse.builder() .statusCode("200") .build())) .passthroughBehavior(PassthroughBehavior.NEVER) .requestTemplates(Map.of( "application/json", "{ \"statusCode\": 200 }")) .build(), MethodOptions.builder() .methodResponses(List.of(MethodResponse.builder().statusCode("200").build())) .build()); this.methods.push(method); } } public class BooksStack extends NestedStack { public final Method[] methods; public BooksStack(Construct scope, ResourceNestedStackProps props) { super(scope, "integ-restapi-import-BooksStack", props); IRestApi api = RestApi.fromRestApiAttributes(this, "RestApi", RestApiAttributes.builder() .restApiId(props.getRestApiId()) .rootResourceId(props.getRootResourceId()) .build()); Method method = api.root.addResource("books").addMethod("GET", MockIntegration.Builder.create() .integrationResponses(List.of(IntegrationResponse.builder() .statusCode("200") .build())) .passthroughBehavior(PassthroughBehavior.NEVER) .requestTemplates(Map.of( "application/json", "{ \"statusCode\": 200 }")) .build(), MethodOptions.builder() .methodResponses(List.of(MethodResponse.builder().statusCode("200").build())) .build()); this.methods.push(method); } } public class DeployStackProps extends NestedStackProps { private String restApiId; public String getRestApiId() { return this.restApiId; } public DeployStackProps restApiId(String restApiId) { this.restApiId = restApiId; return this; } private Method[] methods; public Method[] getMethods() { return this.methods; } public DeployStackProps methods(Method[] methods) { this.methods = methods; return this; } } public class DeployStack extends NestedStack { public DeployStack(Construct scope, DeployStackProps props) { super(scope, "integ-restapi-import-DeployStack", props); Deployment deployment = Deployment.Builder.create(this, "Deployment") .api(RestApi.fromRestApiId(this, "RestApi", props.getRestApiId())) .build(); if (props.getMethods()) { for (Object method : props.getMethods()) { deployment.node.addDependency(method); } } Stage.Builder.create(this, "Stage").deployment(deployment).build(); } } new RootStack(new App());
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic final class
A builder forRestApiAttributes
static final class
An implementation forRestApiAttributes
-
Method Summary
Modifier and TypeMethodDescriptionstatic RestApiAttributes.Builder
builder()
The ID of the API Gateway RestApi.default String
The name of the API Gateway RestApi.The resource ID of the root resource.Methods inherited from interface software.amazon.jsii.JsiiSerializable
$jsii$toJson
-
Method Details
-
getRestApiId
The ID of the API Gateway RestApi. -
getRootResourceId
The resource ID of the root resource. -
getRestApiName
The name of the API Gateway RestApi.Default: - ID of the RestApi construct.
-
builder
- Returns:
- a
RestApiAttributes.Builder
ofRestApiAttributes
-