使用aws-appsync-codegen为AWS AppSync生成iOS(Swift)源代码

因为我在生成AWS AppSync用于iOS(Swift)的代码时有一个误解,所以我会详细地写下相关细节,以便从官方示例中理解。由于我只是接触AppSync一天,对于我的理解是否准确还不确定,所以如果你有任何意见,请在评论中指出。

而且,目前(2020年)AppSync的官方文档基于使用Amplify,如果不使用Amplify,寻找解决方法会相当困难。由于困难,因此将其记录下来作为动力。

样本来自AWS AppSync官方提供的“事件应用”示例模式。

一開始先下結論。

可能正在查看此页面的用户最想知道的是关于代码生成工具aws-appsync-codegen的使用方法,所以我首先会解释一下。

# aws-appsync-codegen generate tmp/*.graphql --schema tmp/schema.json --target swift --output tmp/GraphQLAPI.swift
    • tmp/*.graphql

GraphQL リクエスト用のクエリを指定

*にしているのはリクエストが複数ある場合にそれをtmpディレクトリに置いているためです
後述の「クエリ画面」からコピペしてファイルにします

tmp/schema.json

GraphQLのための仕様

後述の「スキーマ画面」から「スキーマをエクスポート」でschema.jsonを選びます

注意: jsonを選びましょう。schema.graphqlではありません

–targetはswiftを指定

省略できますがこの説明のため丁寧に書いておきます

在图像中的解释

查询界面

スクリーンショット 2020-03-27 17.45.44.png

模式屏幕

スクリーンショット 2020-03-27 16.45.32.png

引入aws-appsync-codegen

我会写一下关于在Mac上使用Docker安装npm的方法。

作为iOS应用开发者,我不是在工作中追踪npm的信息,也不了解不同版本的行为差异,因此不想把npm本身安装在系统上。而且,如果出现与环境相关的错误时,会特别麻烦。

也许还有一种方法是按版本来安装npm并切换使用(例如使用nodeenv或nodebrew),但由于我们并不太依赖npm,所以不想考虑这个选项。

下载node的镜像。

$ docker pull node

在 Docker 上运行并在控制台上使用 npm。

启动Node容器并进入控制台。

$ docker run -v (pwd)/graphql:/tmp -it --rm node /bin/bash

-it

インタラクティブにターミナルを起動

-v

ローカルとコンテナ内のボリュームを共有し、GraphQL リクエスト用のクエリとschema.jsonをコンテナ内でも使えるようにします
(pwd)

fishなので(pwd)
bashだと$(pwd)かも

在容器中使用npm来安装aws-appsync-codegen。

由于在容器内,所以我觉得可以在全局范围内进行安装。

# npm install -g aws-appsync-codegen

使用aws-appsync-codegen进行代码生成。

# aws-appsync-codegen generate tmp/queries.graphql --schema tmp/schema.json --target swift --output tmp/GraphQLAPI.swift
    コード生成した結果も共有のボリュームに出力しています
广告
将在 10 秒后关闭
bannerAds