通过id API获取项目getway AWS

时间:2019-03-25 04:33:35

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

我是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控制台   他们的网站带有漂亮的用户界面。

获取配置: enter image description here

1 个答案:

答案 0 :(得分:1)

您需要向AWS API Getway添加新资源,因此需要创建/test/{item_id}路径,然后需要为该资源创建新方法GET(您可以在AWS Apigateway的API下进行所有操作- >您的api名称->资源),然后将其指向相同的lambda函数。现在,您可以从item_id获取event.pathParameters.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}"`));
        }
    };