前面对AWS Amplify进行一个基本的介绍,以及如何为React APP添加用户验证和使用S3存储的功能,下面介绍如何在Amplify中使用AWS API功能。

AWS Amplify
AWS Amplify系列教程:
- AWS Amplify系列之一:简介
- AWS Amplify系列之二:增加验证功能
- AWS Amplify系列之三:增加文件存储功能
- AWS Amplify系列之四:增加API功能
- AWS Amplify系列之五:自定制验证功能
- AWS Amplify教程之:Google OAuth登录
增加GraphQL API服务
首先运行命令:
bash
amplify add api进行如下设置:

AWS Amplify教程
最后一步询问是否编辑schema,其实就是amplify/backend/api/amplifydemo/schema.graphql这个文件。
之后运行以下命令在AWS中创建相应资源:
bash
amplify push在此过程中Amplify会询问是否需要创建相应的query,mutation,subscription等功能,这里都可以选择默认值。之后只要schema做了更改,这些操作函数都会被自动生成。
关于GraphQL的教程,请参考这里。
都创建完毕后可以查看所有用到的服务:
bash
amplify consoleReact代码
这里只以添加todo为例。首先添加src/components/ApiDemo.js:
javascript
import React from 'react';
import { API, graphqlOperation} from 'aws-amplify';
import { createTodo } from '../graphql/mutations';
import { listTodos } from '../graphql/queries';
export default function ApiDemo() {
async function addTodo() {
try {
const todo = {
id: 1,
name: 'todo demo - name',
description: 'todo demo - desc'
}
await API.graphql(graphqlOperation(createTodo, {input: todo}))
} catch (err) {
console.log('error creating todo:', err)
}
}
const list = async () => {
const res = await API.graphql(graphqlOperation(listTodos));
res.data.listTodos.items.map((todo) => {
console.log(todo.id, todo.name, todo.description);
})
}
return (
<div>
<button onClick={addTodo}>Add</button>
<button onClick={list}>List</button>
</div>
)
}当然,需要在App.js中添加对这个组件的引用。
运行这个APP并单击“Add”按钮后,进入AWS AppSync可以看到新添加的数据:

AWS Amplify教程
同时也能在控制台看到输出:

AWS Amplify教程
增加REST API服务
运行命令:
bash
amplify add api然后选择:
- REST
- 输入API名称
- 输入API路径
- 输入Lambda名称
- 选择NodeJS
- 选择函数模板为:Hello World
- 是否选择高级设置?No
- Restrict API access: no
- Do you want to add another path? no
Amplify就会在amplify/backend/function/src下创建API对应的源代码,只需要自己编辑该源代码就可以增加自己的功能了。
然后运行以下命令发布API:
bash
amplify push