我在与Mobilehub项目绑定的离子项目中配置了Amplify。
API 是使用无服务器框架创建的:
functions:
device:
handler: handler.device
events:
- http:
path: devices
method: get
authorizer: aws_iam
- http:
path: devices
method: put
authorizer: aws_iam
- http:
path: devices
method: post
authorizer: aws_iam
- http:
path: devices
method: delete
authorizer: aws_iam
API 有效,据我所知,它们与我的认知用户池相关联。事实上,当我调用该 API 上的 get 时,我会收到一条"缺少令牌"消息。
我正在尝试在 Ionic 应用程序中实现 API 调用。该应用程序是离子aws
模板,因此它能够毫无问题地登录到cognito。
我从移动中心页面下载了"aws-exports.js"文件,该文件包含在我的来源中并导入
import awsmobile from '../../aws-exports';
import Amplify, { API } from 'aws-amplify';
ionViewDidLoad(){
Amplify.configure(awsmobile);
console.log(Amplify);
let apiName = 'dev-parameters';
let path = '/devices';
API.get(apiName, path).then(response => {
debugger;
console.log(response);
});
}
但是,我可以从进行的 http 调用中看到,进行了返回 403 的OPTIONS
调用。
请求:
:method GET
:authority cx1smjqtj5.execute-api.eu-west-1.amazonaws.com
:scheme https
:path /dev/devices
user-agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 OPR/50.0.2762.67
upgrade-insecure-requests 1
accept text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q= 0.8
accept-encoding gzip, deflate, br
accept-language en-GB,en-US;q=0.9,en;q=0.8
响应:
{
"message": "Missing Authentication Token"
}
我真的不明白我在这里错过了什么或做错了什么。
在此配置中一切都正确。我能够通过在打字稿中编译aws-export.js(将其重命名为aws-exports.ts(来使其工作。之后,API 调用将正确进行身份验证。
tsc aws-export.ts
生成新的 aws 导出.js则模块正确导入。