问题描述
将非平凡的单表动态发电机连接到React前端有哪些选择?我正在使用cognito用户池/身份验证,并使其与带有自定义组件的Amplify auth配合得很好,但是我对单个表ddb的访问模式似乎不能与Amplify api graphql方法一起很好地工作。
那么,有没有一种方法可以调用端点(例如http api网关),而无需使用amplify来处理使用了cognito身份验证的身份?
非常感谢任何帮助/建议。
解决方法
我已经构建了一个React应用,并将其通过REST API连接到我的后端(Cognito,API Gateway,Lambda,DynamoDB等)。我的DDB是单个表。我在前端使用了AWS Amplify,并且运行良好。
以下是使用AWS Amplify拨打我的后端电话的摘要
import {API,Auth} from "aws-amplify";
export default function MyComponent() {
// variables,hooks,etc. go here
async function handleSubmit(widget) {
let widget = await createWidget(widget);
// do stuff with widget
}
async function createWidget(widget) {
try {
const args = {
headers: {
Authorization: `Bearer ${(await Auth.currentSession())
.getIdToken()
.getJwtToken()}`
},body: {
// data to send to my API goes here
}
};
return API.post("my_api","/widgets",args);
} catch (e) {
// do error handling
}
}
return (
// form with onSubmit=handleSubmit(widget)
);
}
在此代码段中,我使用Aplify的Auth和API类对后端进行调用。我的应用程序使用JWT令牌对我的API进行经过身份验证的调用,因此我使用Amplify的Auth
类来获取需要与请求一起发送的令牌(在标头中)。我没有使用graphql,但是我怀疑过程是相似的。
如果您不想要使用Amplify,我不明白为什么您不能只直接向您选择的客户端查询API。
您说您的访问模式似乎不适用于Amplify。您能详细说明为什么吗?