【Golang】ものすごく簡単なタスク管理アプリを作ってみた

Golang

今回作成したタスク管理アプリの概要

今回作ったタスク管理アプリは、実際のDBに接続するのではなく、Taskオブジェクトを格納するためのスライスをDBと見立てて、作成や取得、削除といったCRUD処理を実装しました。

  • createTask(): 新規タスクを作成する関数
  • getTasks(): すべてのタスクを取得する関数
  • updateTask(): タスクを更新する関数
  • deleteTask(): タスクを削除する関数

実際に書いたコードは以下に載せてあります↓

実際のコードはこちら

package main

import (
    "encoding/json"
    "fmt"
    "net/http"
)

type Task struct {
    ID        int    `json:"id"`
    Name      string `json:"name"`
    Completed bool   `json:"completed"`
}

var tasks []Task
var currentID int

func createTask(w http.ResponseWriter, r *http.Request) {
    var task Task
    json.NewDecoder(r.Body).Decode(&task)
    currentID++
    task.ID = currentID
    tasks = append(tasks, task)
    json.NewEncoder(w).Encode(task)
}

func getTasks(w http.ResponseWriter, r *http.Request) {
    json.NewEncoder(w).Encode(tasks)
}

func updateTask(w http.ResponseWriter, r *http.Request) {
    var task Task
    json.NewDecoder(r.Body).Decode(&task)
    for i, item := range tasks {
        if item.ID == task.ID {
            tasks[i] = task
            break
        }
    }
    json.NewEncoder(w).Encode(task)
}

func deleteTask(w http.ResponseWriter, r *http.Request) {
    var task Task
    json.NewDecoder(r.Body).Decode(&task)
    for i, item := range tasks {
        if item.ID == task.ID {
            tasks = append(tasks[:i], tasks[i+1:]...)
            break
        }
    }
    json.NewEncoder(w).Encode(task)
}

func main() {
    http.HandleFunc("/tasks", getTasks)
    http.HandleFunc("/tasks/create", createTask)
    http.HandleFunc("/tasks/update", updateTask)
    http.HandleFunc("/tasks/delete", deleteTask)
    fmt.Println("Starting server on port 8000")
    http.ListenAndServe(":8000", nil)
}

このコードでは、タスクを管理するための構造体 Task を定義しています。タスクの一覧は tasks 配列に格納し、ID は currentID 変数を使用して管理しています。

それぞれのAPIのハンドラー関数にそれぞれの機能を持っています。 main関数にて、それぞれのAPIをURLと紐付けし、サーバーを立ち上げています。

タイトルとURLをコピーしました