2021-07-16 22:11:10 +09:00
|
|
|
# REST APIエンドポイントの作成
|
|
|
|
|
2022-03-07 11:25:55 +09:00
|
|
|
ここからは、Hasuraを使ってREST APIエンドポイントを作成し、実際にWebアプリケーションから利用する方法を説明します。
|
2021-07-20 21:06:36 +09:00
|
|
|
|
|
|
|
## 設計
|
|
|
|
|
2022-03-07 11:34:46 +09:00
|
|
|
HasuraはGraphQL APIサーバーとして利用するだけでなく、REST APIサーバーとして利用することもできます。このハンズオンでは、GraphQL QueryをREST化し、次の仕様のREST APIエンドポイントを作成します。
|
2021-07-20 21:06:36 +09:00
|
|
|
|
2022-03-07 15:02:51 +09:00
|
|
|
| 名称 | HTTPメソッドとパス | 説明 |
|
|
|
|
| ------------ | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
|
|
| ページの取得 | `GET /api/rest/page/:id` | 割り当てられた識別子 `id` をもつページを取得します。ページが存在する場合、レスポンスボディには `data.page.content` プロパティを含みます。 |
|
|
|
|
| ページの更新 | `PUT /api/rest/page/:id` | 割り当てられた識別子 `id` をもつページを更新します。リクエストボディには `content` プロパティを与えます。 |
|
2021-07-16 22:11:10 +09:00
|
|
|
|
2021-07-20 21:06:36 +09:00
|
|
|
## 「ページの取得 (`GET page/:id`)」エンドポイントの作成
|
|
|
|
|
|
|
|
ページを取得するためのREST APIエンドポイントを作成します。
|
|
|
|
|
2022-03-07 11:34:46 +09:00
|
|
|
![](https://lh3.googleusercontent.com/WpWX9e0zMECBpUvdyFXyPAxKauwgpNVAwGSLzjt3M99aeL9t90CrqZrdpEf39uh5SKPBeYvfMX0i6KvTuXf39_rccK1o7aohwFL_OCmz0TX-i0Lc2tlJpk5gPMdTrEqzKyElKvPzEQ=w1280)
|
|
|
|
|
2021-07-20 21:06:36 +09:00
|
|
|
コンソールのトップ画面のGraphiQLのパネルにアクセスし、次のコードを書きます。
|
2021-07-16 22:11:10 +09:00
|
|
|
|
|
|
|
```graphql
|
|
|
|
query getPage($id: Int!) {
|
|
|
|
page: pages_by_pk(id: $id) {
|
|
|
|
id
|
|
|
|
content
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2021-07-20 21:06:36 +09:00
|
|
|
[REST]ボタンを選択し、REST APIエンドポイント作成フォームを表示します。次の必要事項を入力し、作成ボタンを選択しエンドポイントを作成します。
|
|
|
|
|
2022-03-07 11:34:46 +09:00
|
|
|
![](https://lh3.googleusercontent.com/fKkiNL4nWYUtiG8OfAk8mhTxdJuZQclLLBWheVclr4EcC7ggsZzpI4mTYGQ-6pvWZWApa2acaUJKVjOFy5oHwqhtVfn4arYX01B29yUvOQwWPRIq-6JOBFNTfP_FxoNJNRaseYEMbw=w1280)
|
|
|
|
|
2021-07-20 21:06:36 +09:00
|
|
|
| 項目 | 説明 | 内容 |
|
|
|
|
| -------- | ----------------------- | ---------- |
|
|
|
|
| Name | エンドポイントの名称 | get page |
|
2024-02-01 00:29:44 +09:00
|
|
|
| URL Path | `/api/rest/` 以降のパス | `page/:id` |
|
2021-07-20 21:06:36 +09:00
|
|
|
| Method | HTTPメソッド | `GET` |
|
|
|
|
|
|
|
|
## 「ページの更新 (`PUT page/:id`)」エンドポイントの作成
|
2021-07-16 22:11:10 +09:00
|
|
|
|
2021-07-20 21:06:36 +09:00
|
|
|
ページを更新するためのREST APIエンドポイントを作成します。
|
|
|
|
|
2022-03-07 11:34:46 +09:00
|
|
|
![](https://lh3.googleusercontent.com/yeEU1sF7DR3VA7tWn-FDofpFIfK93q2hssqnn25c_-0bnAbo8WdzdTahQ3HVst7hCniT5hJqHgWS9Pu9zTQorHxErtdp8PSFJmgsU6R0G_oPzF__Up-aSdHQWFc_uuWyVU_Ux50jlw=w1280)
|
|
|
|
|
2021-07-20 21:06:36 +09:00
|
|
|
コンソールのトップ画面のGraphiQLのパネルにアクセスし、次のコードを書きます。
|
2021-07-16 22:11:10 +09:00
|
|
|
|
|
|
|
```graphql
|
|
|
|
mutation putPage($id: Int!, $content: jsonb!) {
|
|
|
|
page: insert_pages_one(
|
|
|
|
object: { id: $id, content: $content }
|
|
|
|
on_conflict: { constraint: pages_pkey, update_columns: content }
|
|
|
|
) {
|
|
|
|
id
|
|
|
|
content
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2021-07-20 21:06:36 +09:00
|
|
|
[REST]ボタンを選択し、REST APIエンドポイント作成フォームを表示します。次の必要事項を入力し、作成ボタンを選択しエンドポイントを作成します。
|
|
|
|
|
2022-03-07 11:34:46 +09:00
|
|
|
![](https://lh3.googleusercontent.com/NUKkifFtbdjjti9tga3fHp0-iIc4e48Cz2HrBOUngbaDad5an29hJ9ucn7kG3MXLIyZw80wpfG3aZZrS9kDEYUnl9cV3VB0oZ6LqIRKbHlgUGBF2PJJC9ifLCABZhmn1Rv8u9mZ8qw=w1280)
|
|
|
|
|
2021-07-20 21:06:36 +09:00
|
|
|
| 項目 | 説明 | 内容 |
|
|
|
|
| -------- | ----------------------- | ---------- |
|
|
|
|
| Name | エンドポイントの名称 | put page |
|
2024-02-01 00:29:44 +09:00
|
|
|
| URL Path | `/api/rest/` 以降のパス | `page/:id` |
|
2021-07-20 21:06:36 +09:00
|
|
|
| Method | HTTPメソッド | `PUT` |
|
|
|
|
|
2021-07-25 10:51:51 +09:00
|
|
|
作成が完了すると作成したREST APIエンドポイントの一覧が表示されます。
|