【问题标题】:get item by id API getway AWS通过 id API 网关 AWS 获取项目
【发布时间】:2019-08-15 07:27:54
【问题描述】:

我是 AWS 新手,刚刚创建了一个 API 通道。我希望能够获取数据库中的所有项目并获取单个项目。

现在我获取所有项目的 http 请求如下所示:

https://xxxx.amazonaws.com/test/

我想要这样的东西:

  https://xxxx.amazonaws.com/test/123

其中 123 是我的 DynamoDB 数据库中名为 RACF 的列的值。

我的 lambda 函数如下所示:

   .
   .
   .
    exports.handler = (event, context, callback) => {
        console.log('Received event:', JSON.stringify(event, null, 2));
        const tableName = 'test';

        const done = (err, res) => callback(null, {
            statusCode: err ? '400' : '200',
            body: err ? err.message : JSON.stringify(res),
            headers: {
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': '*'
            },
        });

        switch (event.httpMethod) {
            .
            .
            case 'GET':
                dynamo.scan({ TableName: tableName }, done);
                break;
           .
           .
           default:
                done(new Error(`Unsupported method "${event.httpMethod}"`));
        }
    };

我读到我必须使用 . dynamo.getItem()。但我不确定如何使用GET 实现它

注意:我没有使用命令行。我正在使用 AWS 控制台 他们的网站具有漂亮的用户界面。

获取配置:

【问题讨论】:

    标签: node.js amazon-web-services api aws-lambda aws-api-gateway


    【解决方案1】:

    您需要向 AWS API Getway 添加新资源,因此您需要创建 /test/{item_id} 路径,然后您需要为资源创建新方法 GET(您在 API 下的 AWS Apigateway 中完成所有这些操作 -> 您的api 名称 -> 资源)并将其指向相同的 lambda 函数。现在您可以从event.pathParameters.item_id 获取item_id 值。最后,您需要更改代码以使其看起来更像这样

       .
       .
       .
        exports.handler = (event, context, callback) => {
            console.log('Received event:', JSON.stringify(event, null, 2));
            const tableName = 'test';
    
            const done = (err, res) => callback(null, {
                statusCode: err ? '400' : '200',
                body: err ? err.message : JSON.stringify(res),
                headers: {
                    'Content-Type': 'application/json',
                    'Access-Control-Allow-Origin': '*'
                },
            });
    
            switch (event.httpMethod) {
                .
                .
                case 'GET':
                    if (event.pathParameters.item_id != undefined) {
                       dynamo.getItem({ 
                          TableName: tableName, 
                          Key: { 
                            id: { N: event.pathParameters.item_id } 
                          } 
                       },
                       done);
                    } else {
                       dynamo.scan({ TableName: tableName }, done);
                    }
                    break;
               .
               .
               default:
                    done(new Error(`Unsupported method "${event.httpMethod}"`));
            }
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      相关资源
      最近更新 更多