commew / timelogger-web

時間記録アプリ
https://timmew.commew.net
MIT License
2 stars 0 forks source link

:sparkles: #49 デフォルトのカテゴリ、グループ名を返すAPIの設計を実施 #69

Closed stkzk3110 closed 1 year ago

stkzk3110 commented 1 year ago

issueURL

https://github.com/commew/timelogger-web/issues/49

この PR で対応する範囲 / この PR で対応しない範囲

https://github.com/commew/timelogger-web/issues/49 の完了の定義を満たしていること。

デフォルトのカテゴリ、グループ名を返すAPIの設計を行いました。

Storybook の URL、 スクリーンショット

API設計だけなので不要。

変更点概要

デフォルトのカテゴリ、グループ名を返すAPIの設計を行いました。

サンプルリクエスト・レスポンス

タスク計測一覧のカテゴリグループを取得する

正常系

curl --request GET \
  --url https://stoplight.io/mocks/cube3110/timmew/84330/task-groups \
  --header 'Accept: application/json, application/xml, multipart/form-data' \
  --header 'Authorization: Bearer YWRtaW5Vc2VyOnBhc3N3b3JkMTIzNA==' \
  --header 'Prefer: code=200, example=ExampleSuccess'

HTTP/1.1 200 OK

{
  "groups": [
    {
      "id": 1,
      "name": "仕事",
      "categories": [
        {
          "id": 1,
          "name": "会議"
        },
        {
          "id": 2,
          "name": "資料作成"
        }
      ]
    },
    {
      "id": 2,
      "name": "学習",
      "categories": [
        {
          "id": 3,
          "name": "TOEIC"
        }
      ]
    },
    {
      "id": 3,
      "name": "趣味",
      "categories": [
        {
          "id": 4,
          "name": "散歩"
        },
        {
          "id": 5,
          "name": "読書"
        }
      ]
    },
    {
      "id": 4,
      "name": "グループ未分類",
      "categories": [
        {
          "id": 6,
          "name": "移動・外出"
        }
      ]
    }
  ]
}

異常系(認証エラー)

curl --request GET \
  --url https://stoplight.io/mocks/cube3110/timmew/84330/task-groups \
  --header 'Accept: application/json, application/xml, multipart/form-data' \
  --header 'Authorization: Bearer YWRtaW5Vc2VyOnBhc3N3b3JkMTIzNA==' \
  --header 'Prefer: code=401, example=ExampleAuthenticated'

401 Unauthorized

{
  "type": "UNAUTHENTICATED",
  "title": "Account is not authenticated."
}

500 Internal Server Error

curl --request GET \
  --url https://stoplight.io/mocks/cube3110/timmew/84330/task-groups \
  --header 'Accept: application/json, application/xml, multipart/form-data' \
  --header 'Authorization: Bearer YWRtaW5Vc2VyOnBhc3N3b3JkMTIzNA==' \
  --header 'Prefer: code=500, example=ExampleInternalServerError'

500 Internal Server Error

{
  "type": "INTERNAL_SERVER_ERROR",
  "title": "Internal Server Error."
}

レビュアーに重点的にチェックして欲しい点

PRにコメントとして残している点を特に見てほしいです。

補足情報

特になし。

vercel[bot] commented 1 year ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
timelogger-web ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 2, 2023 11:01am
stkzk3110 commented 1 year ago

@keitakn このPRで対応した時に思ったのですが、APIのレスポンス結果に今、typeとtitleしかないですが、エラーコードも返して上げた方が良いかもなと思いましたがどうですかね🤔

keitakn commented 1 year ago

@stkzk3110

APIのレスポンス結果に今、typeとtitleしかないですが、エラーコードも返して上げた方が良いかもなと思いましたがどうですかね🤔

エラーコードを追加するとして、その目的はどのような感じでしょうか:eyes:?

https://github.com/commew/timelogger-web/pull/58 のPRの説明欄に書いてあるのですが この記事 のようにRFC7807を参考にしていてこれだと type, title がエラーコードの役割を果たすと認識していますがこれだと不十分という話でしょうか?

stkzk3110 commented 1 year ago

@keitakn 確かにtypeでもいけますね。 単純にレスポンス結果によってフロント側の挙動が変わるけどそれを判別する方法についてでした。 typeでエラーコードと同じ役割を果たせそうなので大丈夫です🙏

ありがとうございます!