Skip to content

TODOリストAPIの実装タスク分解 #2

@Nao-Mk2

Description

@Nao-Mk2

前提条件

要件

  • TODOリストを管理するWeb APIサーバーを実装する。
  • TODOアイテムは以下のフィールドを持つ。
    • ID: int
    • タイトル: string
    • 期限: time.Time
  • TODOアイテムはメモリ上に保持する。
  • /todo/{{id}} にGETリクエストをすると、指定したIDのTODOアイテムを取得する。
  • /todo にPOSTリクエストをすると、指定したIDのTODOアイテムを作成する。
    • レスポンスボディは以下のJSON形式とする。
      {
        "id": 1, // ID
        "title": "タイトル", // タイトル
        "due_date": "期限" // 期限(RFC3339形式)
      }
      

タスク分解

1. プロジェクト初期設定

  • Go モジュールの初期化
  • 必要なパッケージのインストール

2. モデル層の実装

  • TODOアイテムの構造体定義
  • メモリ上でTODOアイテムを管理するリポジトリの実装
  • リポジトリのテスト実装

3. サービス層の実装

  • TODOアイテムの作成と取得のビジネスロジック実装
  • サービス層のテスト実装

4. ハンドラー層の実装

  • HTTPリクエストを処理するハンドラーの実装
  • ハンドラーのテスト実装

5. メインアプリケーションの実装

  • HTTPサーバーの設定と起動
  • ルーティングの設定

6. 動作確認

  • 手動テストによる動作検証

ディレクトリ構成例

/
├── cmd/
│   └── server/
│       └── main.go               # アプリケーションのエントリーポイント
├── internal/
│   ├── domain/
│   │   └── todo.go               # TODOアイテムのドメインモデル
│   ├── repository/
│   │   ├── todo_repository.go    # TODOアイテムのリポジトリインターフェース
│   │   ├── memory/
│   │   │   ├── todo_repository.go  # メモリ上に保持するリポジトリの実装
│   │   │   └── todo_repository_test.go  # リポジトリのテスト
│   ├── service/
│   │   ├── todo_service.go       # TODOサービスのインターフェース
│   │   ├── todo_service_impl.go  # TODOサービスの実装
│   │   └── todo_service_test.go  # サービスのテスト
│   └── handler/
│       ├── todo_handler.go       # HTTPハンドラー
│       └── todo_handler_test.go  # ハンドラーのテスト
├── pkg/
│   └── utils/                    # 汎用的なユーティリティ関数
├── go.mod                        # Go モジュール定義
├── go.sum                        # 依存関係のチェックサム
└── README.md                     # プロジェクトの説明

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions