Resource
The ApiGateway Resource allows you to manage AWS ApiGateway Resources for creating and configuring API endpoints.
Minimal Example
Section titled “Minimal Example”Create a basic ApiGateway Resource under a specified parent resource:
import AWS from "alchemy/aws/control";
const apiResource = await AWS.ApiGateway.Resource("apiResource", { ParentId: "abc123xyz", // Replace with an actual ParentId PathPart: "users", // The path part for the resource RestApiId: "xyz789abc", // Replace with an actual RestApiId adopt: true // Adopt existing resource if it already exists});
Advanced Configuration
Section titled “Advanced Configuration”Configure an ApiGateway Resource with additional settings such as enabling CORS:
import AWS from "alchemy/aws/control";
const corsApiResource = await AWS.ApiGateway.Resource("corsApiResource", { ParentId: "abc123xyz", // Replace with an actual ParentId PathPart: "products", // The path part for the resource RestApiId: "xyz789abc", // Replace with an actual RestApiId adopt: true // Adopt existing resource if it already exists});
// Assuming the use of a separate method to configure CORSawait AWS.ApiGateway.Method("corsMethod", { HttpMethod: "OPTIONS", ResourceId: corsApiResource.id, RestApiId: "xyz789abc", // Replace with an actual RestApiId AuthorizationType: "NONE", MethodResponses: [{ StatusCode: "200", ResponseParameters: { "method.response.header.Access-Control-Allow-Origin": true, "method.response.header.Access-Control-Allow-Headers": true, "method.response.header.Access-Control-Allow-Methods": true } }], RequestParameters: { "method.request.header.Origin": true }, Integration: { Type: "MOCK", RequestTemplates: { "application/json": '{"statusCode": 200}' } }});
Creating Nested Resources
Section titled “Creating Nested Resources”Create a nested ApiGateway Resource under an existing resource:
import AWS from "alchemy/aws/control";
const nestedResource = await AWS.ApiGateway.Resource("nestedResource", { ParentId: "xyz789abc", // Replace with an actual ParentId of the parent resource PathPart: "orders", // The path part for the nested resource RestApiId: "xyz789abc", // Replace with an actual RestApiId adopt: false // Do not adopt existing resource; fail if it exists});
Using the Resource in a Method
Section titled “Using the Resource in a Method”Demonstrate how to use an ApiGateway Resource in conjunction with a method:
import AWS from "alchemy/aws/control";
const methodApiResource = await AWS.ApiGateway.Resource("methodApiResource", { ParentId: "abc123xyz", // Replace with an actual ParentId PathPart: "login", // The path part for the resource RestApiId: "xyz789abc", // Replace with an actual RestApiId adopt: true // Adopt existing resource if it already exists});
await AWS.ApiGateway.Method("loginMethod", { HttpMethod: "POST", ResourceId: methodApiResource.id, RestApiId: "xyz789abc", // Replace with an actual RestApiId AuthorizationType: "AWS_IAM", // Example of authorization type RequestModels: { "application/json": "LoginRequest" }, MethodResponses: [{ StatusCode: "200", ResponseModels: { "application/json": "LoginResponse" } }]});