所以我在DynamoDB中创建了一个超级基本的NoSQL数据库,并使用API网关来访问数据。我创建了一个非常简单的Get请求,根据它的ID检索文档。现在我对Angular和AWS还是个新手,所以我现在有点懵了。我尝试了不同的代码,发现了一个运行$http的非常基本的angular示例。Get只是在窗口中显示数据。我的问题是,当我用任何其他API端点运行这个angular代码时,它都工作得很好。但是,当我在API Gateway端点上运行此代码时,没有任何东西可以通过。我试过添加一个内容类型的标题,但仍然没有得到我任何东西。被困住了,任何帮助都会很感激。我确信这是我在API网关/我的休息呼叫上错过的一些明显的东西,但任何帮助都会很棒!提前感谢!
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<h1>{{myWelcome}}</h1>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("https://xyz.execute-api.us-west-2.amazonaws.com/dev/idex/0001")
.then(function(response) {
$scope.myWelcome = response.data;
});
});
</script>
</body>
</html>
显然json应该通过H1标签显示,但什么也没有通过。此外,为了安全起见,我还更改了端点url。
首先,我强烈建议你先用curl测试你的API,以确保它在简单的情况下能正常工作,然后再尝试通过浏览器从Angular调用它。
正如在你的问题的一些评论中已经提到的,你需要为这个方法启用CORS。确保在启用CORS后重新部署API。详细说明如下。
在API Gateway控制台中,选择GET方法。在"Actions"下拉按钮中选择"Enable CORS"。在右下方,点击"启用CORS并替换现有CORS标头"按钮。完成后,从"Actions"下拉按钮中选择"Deploy API"以重新部署API。(启用CORS后必须重新部署)