Open7

REST APIからGraphQLのクエリを発行する

0Yu0Yu

やること

https://http.cat から猫画像を取得し,GraphQL API のクエリを発行する.

Hasuraについて

Instant realtime GraphQL engine
GraphQLとSQL(JSON)を相互変換し,GraphQL APIサーバーを自動で構築するエンジン
https://hasura.io/

参考

https://github.com/httpcats/http.cat
https://hasura.io/learn/
https://hasura.io/docs/latest/graphql/core/index/
https://takeshiamano.medium.com/ぐるなびのrest-apiをhasuraでgraphqlにしてみた-9f6516b0d28b

0Yu0Yu

Formatter

https://prettier.io/docs/en/install.html に従い,プロジェクトにprettierを導入する.

npm install --save-dev --save-exact prettier
echo {}> .prettierrc.json

.prettierignoreを作成し,下記を追記.

# Ignore artifacts:
build
coverage

commit時にフォーマットする.

npm install --save-dev husky lint-staged
npx husky install
npm set-script prepare "husky install"
npx husky add .husky/pre-commit "npx lint-staged"
{
  "lint-staged": {
    "**/*": "prettier --write --ignore-unknown"
  }
}
0Yu0Yu
  1. DockerでHasuraを起動する
    https://hasura.io/docs/latest/graphql/core/getting-started/docker-simple/
    に従い,作業用ディレクトリにdocker-compose.yamlを追加する
# in a new directory run
wget https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml
# or run
curl https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml -o docker-compose.yml
  1. Hasura GraphQL engineを起動し,URLからdatabaseにアクセスする
$ docker-compose up -d
http://localhost:8080/console

Data -> Manage -> Connect Database にアクセス
Connect Databaseをクリックし,データベースを作成する
Data -> Create table からテーブルを作成する

0Yu0Yu

Hasuraでは
1:nの関係をArray relationship
1:1の関係をObject relationship
と定義している

0Yu0Yu
  1. APIからデータを取得し,Posgres内に格納する

Nodeのバージョンはv16.15.0

create_status

  • 下記を実行し,GraphQLのクエリを発行する
$node import_status.js
  • Data > status > Browse Rows から正常にinsertされていることを確認
  1. graphiQLコンソールからクエリを叩いてみる

graphiQL