Unlocking the Potential of AWS CDK: Leveraging Multiple HTTP Methods for a Single Resource

Is there a way to have a shared endpoint at /spaces with different lambda functions for each HTTP method?

I thought about using a helper function

addResource(path: string, method: HttpMethods, lambda: lambda.Function) {
  const lambdaIntegration: LambdaIntegration = new LambdaIntegration(lambda, { proxy: true });
  const resource: Resource = this.restApi.root.addResource(path);

  resource.addMethod(method, lambdaIntegration, {
    authorizationType: AuthorizationType.IAM,
  });

  return resource;
}

And then calling it for each individual resource

// POST - spaces
gateway.addResource('spaces', HttpMethods.POST, new Function(this, 'droppixel-space-post', {
    runtime: Runtime.NODEJS_12_X,
    code: Code.fromAsset(`${__dirname}/../lambda-fns/space-api/src`),
    handler: 'create.handler',
    environment: {
        TABLE: table.table.tableArn
    }
}))

// GET - spaces
gateway.addResource('spaces', HttpMethods.GET, new Function(this, 'droppixel-space-get', {
    runtime: Runtime.NODEJS_12_X,
    code: Code.fromAsset(`${__dirname}/../lambda-fns/space-api/src`),
    handler: 'list.handler',
    environment: {
        TABLE: table.table.tableArn
    }
}))

This approach works fine for one resource, but when adding more, it fails with

There is already a Construct with name 'spaces' in RootResource [Default]

Is there a recommended pattern for handling this situation elegantly?

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Despite the error message stating that it cannot find module 'angular2/core', the application is still functioning properly

Imagine you have an Angular2 application with a file named app.component.ts that contains some import statements: import {Component} from 'angular2/core'; import {FiltersService} from "./services/filters-service"; import {SearchPipe} from "./ ...

A guide on displaying data from objects containing arrays in React using TypeScript

Hey there! I'm currently facing a challenge in rendering values within an object containing arrays. Let me show you an example of the object structure: data { info1: [{note: "this is note 1", status: true}], info2: [{note: "this i ...

Testing Ag Grid's column headers using Jest and Angular CLI has proven challenging, as some columns from columnDefs remain elusive

Currently, I am using Jest and Angular Cli testing to validate column headers. In my attempt to replicate the process outlined on https://www.ag-grid.com/javascript-grid-testing-angular/#testing-grid-contents, I have encountered an issue where only 2 out ...

Sending the route path to the child component

<Route path="/pointandclick"> <MyComponent /> </Route> Is there a way for MyComponent to retrieve the path of the Route that was accessed in the code above? To clarify, if I want to determine the specific ...

Exploring Observable Functionality in Angular 6

I've been grappling with understanding Angular Observables, but I've managed to get it working. My goal is to fetch data for my dynamic navigation bar. I successfully verified whether the user is logged in or not and displayed the Login or Logout ...

What is the best way to implement React ErrorBoundary in conjunction with redux-observable?

When dealing with asynchronous code, React Error Boundaries may not function as expected. In my case, I am using redux-observable and rxjs to retrieve data from an API. To handle errors, I am trying to utilize the catchError function provided by rxjs. I ...

Creating a project using TypeScript, NodeJs, and mongoose-paginate-v2 seems like an impossible

Having trouble setting up mongoose-paginate-v2 in my current project. I'm facing three errors while trying to compile my code. Any ideas on why this is happening? Many thanks. node_modules/@types/mongoose-paginate-v2/index.d.ts:34:21 - error TS2304: ...

Adding elements to an array is not functioning as expected in TypeScript

I have successfully implemented a table using MatTableModule in Angular with Typescript. Everything works perfectly when I assign values to the datasource like this: let dataRow = {name: dealerInfo.name, address: dealerInfo.address, town: dealerInfo.town ...

What benefits does Option offer over TypeScript's optional `?` operator when it comes to typing?

As I embark on my journey with the fp-ts library, a question arises in my mind: What benefits does the Option type offer compared to TypeScript's standard method of handling optional values using the question mark ? operator? ...

Attempting to create distinct match matchups for every team in a manner reminiscent of the Swiss system format used in the 2024/25 UEFA Champion League

I've been working on devising a tournament pairing system modeled after the updated UEFA Champion League structure. The league phase involves 36 teams, categorized into 4 different pots. Each team is scheduled to play a total of 8 matches against 2 op ...

Can someone explain why the Next 13 API route is showing up as empty?

I am currently working with Next 13 and I am attempting to create a simple API route. My goal is to have a: "hi" returned when I visit localhost:3000/api/auth. Despite not encountering a 404 error or any errors in the terminal or console, I can&a ...

Issue with TypeORM: The database table is not being created during migration execution in the SQLITE environment

I'm currently encountering an issue with utilizing migrations in TypeORM with a sqlite3 database. My goal is to achieve consistency across different environments (local/testing/staging/production) by only using runtime environment variables that will ...

A comprehensive method in JavaScript to determine if a variable is defined

There was a moment when I recall stumbling upon a code snippet that utilized a javascript library, possibly lodash, to perform a comprehensive check for the existence of a certain element. For instance: someLib.isDefined(anObject.aNestedObject.anotherNes ...

Unable to locate the term "module"

I've been working on a TypeScript file that includes an exported function called sum: This script is meant to be run in Node.js. function sum(a:number):number{ return a; } module.exports.sum=sum; I'm encountering some issues and I'm not ...

Steps for transitioning a VUE JS project to TypeScript

Is it possible to transition a VUE JS project from JavaScript to TypeScript without rewriting everything? I heard from a friend that it can be done through the VUE CLI, but I haven't been able to find any documentation or articles on this method. Has ...

Utilizing Angular Material Table to present information efficiently

I have a unique data structure that I need to present using mat-table. dataSource= [[1,2],[3,4],[5,6]] In this structure, dataSource[0] always serves as the heading, with the rest of the array items representing its rows. Therefore, the expected output ...

Error message in VsCode plugin stating that property 'X' is not found on type '{}' within a Vue 3 template

Currently, I am in the process of setting up my vue-cli project that utilizes the composition API with <script setup> to fully integrate TypeScript. Each time I try to use variables within template tags, VSCode flags errors. I have already installed ...

What is the process for an Angular Component to receive a return object from a service following an HTTP

I am currently working with angular 4. Is there a way to retrieve an object from a service in this framework? export class LoginRequest { username : string; password : string; } export class LoginResponse { token : string; message : string; sta ...

"Looking for a way to create a new line in my particular situation. Any tips

Here is the code snippet I am working with: let list: Array<string> =[]; page.on('request', request => list.push('>>', request.method(), request.url()+'\\n')); page.on('respon ...

What is the best way to revert a screen's state back to its original state while utilizing react navigation?

How can I reset the state in a functional component back to its initial state when navigating using navigation.navigate()? For example, if a user navigates to screen A, sets some state, then clicks a button and navigates to screen B, and then goes back to ...