fujithuro / expensesBook

自分用の家計簿Webアプリケーションです。サーバーサイドはある程度仕上がっていますがフロントは未作成です。
0 stars 0 forks source link

概要

自分用の家計簿アプリケーション。

出費を1件ずつ登録していき、月ごとに出費の一覧や合計金額を確認できるようにする。費目ごとの絞り込みにも対応する。

Front-End

React(Next.js)でフロントエンドを作成する予定

詳細は、Issue #2 フロントエンドの作成 に記載

Server-Side

REST API

家計簿に対して登録済みの出費を検索したり、出費の登録/更新/削除を行ったりするためのREST APIを提供する

概要 メソッド URL
出費の一覧を取得 GET /api/expenseBook/list/{yyyyMM}
出費の詳細を取得 GET /api/expenseBook/detail/{id}
出費の追加 POST /api/expenseBook
出費の更新 PUT /api/expenseBook/{id}
出費の削除 DELETE /api/expenseBook/{id}

認証について

このREST APIでは、Json Web Token(JWT)による認証および認可を行っている。

リクエストを送る際、ヘッダーのAuthorizationフィールドに、Bearer {token}の形式でJWTを送信する。 JWTの発行機能はまだないため、開発者より個別に取得すること。

権限

トークンには「閲覧用」と「編集用」の2種類の権限がある。 必要な権限のトークンを取得すること。 1つのトークンが両方の権限を持つこともできる。

出費の一覧を取得

パスパラメータ
name required value
yyyyMM 取得する出費の年月。yyyyMM形式
クエリパラメータ
name required value
types 絞り込む費目をコードで指定する。複数指定可能。指定されなければ全て取得する。コードの詳細は「その他補足事項」参照
レスポンス
レスポンスボディ

Content-Type: application/json

[
  {
    "id": "5bcfeb53-6961-475a-b10a-8bbd644993d9",
    "date": "2024-07-12",
    "price": 1800,
    "store": "スーパーマーケット",
    "usage": "食料品",
    "type": 1
  },
  {
    "id": "2e24a6b2-0f57-469b-9a9b-d02755c8f217",
    "date": "2024-07-13",
    "price": 5000,
    "store": "レストラン",
    "usage": "夕食",
    "type": 2
  }
]

出費の詳細を取得

パスパラメータ
name required value
id 取得する出費のid
レスポンス

Content-Type: application/json

{
  "id": "5bcfeb53-6961-475a-b10a-8bbd644993d9",
  "date": "2024-07-12",
  "price": 1800,
  "store": "スーパーマーケット",
  "usage": "食料品",
  "type": 1
}

出費の追加

リクエスト
リクエストボディ

Content-Type: application/json

name required value
date 出費の日付
price 出費金額。マイナスも可
store 支払先
usage 使途
type 費目のコード。詳細は「その他補足事項」参照

e.g.

{
  "date": "2024-07-12",
  "price": 1000,
  "store": "スーパーマーケット",
  "usage": "食料品",
  "type": 1
}
レスポンス

Content-Type: application/json

{
  "id": "5bcfeb53-6961-475a-b10a-8bbd644993d9",
  "date": "2024-07-12",
  "price": 1000,
  "store": "スーパーマーケット",
  "usage": "食料品",
  "type": 1
}

出費の更新

リクエスト
パスパラメータ
name required value
id 更新する出費のid
リクエストボディ

Content-Type: application/json

name required value
date 出費の日付
price 出費金額。マイナスも可
store 支払先
usage 使途
type 費目のコード。コードの詳細は「その他補足事項」参照

e.g.

{
  "id": "5bcfeb53-6961-475a-b10a-8bbd644993d9",
  "date": "2024-07-12",
  "price": 1800,
  "store": "スーパーマーケット",
  "usage": "食料品",
  "type": 1
}
レスポンス

Content-Type: application/json

{
  "id": "5bcfeb53-6961-475a-b10a-8bbd644993d9",
  "date": "2024-07-12",
  "price": 1800,
  "store": "スーパーマーケット",
  "usage": "食料品",
  "type": 1
}

出費の削除

リクエスト
パスパラメータ
name required value
id 更新する出費のid
レスポンス

その他補足事項

費目コード

リクエストで指定できる費目のコード一覧

コード 費目
1 食費・雑費(スーパーなど)
2 食費・雑費(外食など)
3 娯楽
4 身だしなみ
5 ガソリン
6 設備
7 学習
8 医療
9 その他

DB

出費履歴

name type PK not null default description
id uuid gen_random_uuid() 出費を一意にするid
支払日 date 支払った日付
費目cd integer 費目マスターの費目cd
金額 integer 支払った金額。マイナスも許容する
支払先 text 支払先
使途 text 購入した物品や受けたサービス内容
最終更新者id integer 出費を最後に更新したユーザー
最終更新日時 timestamp CURRENT_TIMESTAMP 出費を最後に更新した日時

費目マスター

name type PK not null default description
費目cd integer 費目を一意にするコード
費目名 text 費目の名称
有効区分 boolean true 費目の有効区分。無効の場合、新規登録で選択できなくなる