使用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を指定
省略できますがこの説明のため丁寧に書いておきます
在图像中的解释
查询界面
模式屏幕
引入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
- コード生成した結果も共有のボリュームに出力しています