我是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控制台 他们的网站带有漂亮的用户界面。
答案 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}"`));
}
};