2026年3月11日水曜日

golang and httpd


mkdir go-tiral
cd go-trial
go mod init main.go
go run main.go
-----------------------------------------------------------

 package main

// GET requstのみに対応して、URLで切り分ける

import (

    "fmt"

    "log"

    "net/http"

)

func main() {

    // 1. ハンドラー(処理内容)の定義

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {

        // GET命令のみを許可

        if r.Method != http.MethodGet {

            http.Error(w, "GETメソッドのみ受け付けます", http.StatusMethodNotAllowed)

            return

        }


        // パスによって処理を切り分ける

        switch r.URL.Path {

        case "/hello":

            fmt.Fprintln(w, "こんにちは!")

        case "/status":

            fmt.Fprintln(w, "サーバーは正常に稼働中です")

        default:

            fmt.Fprintf(w, "リクエストされたパス: %s\n", r.URL.Path)

        }


        // クエリパラメータの取得(例: ?name=user)

        name := r.URL.Query().Get("name")

        if name != "" {

            fmt.Fprintf(w, "こんにちは、%sさん!\n", name)

        }

    })


    // 2. 特定のIPアドレスとポートで運用するための設定

    // 全てのインターフェースなら ":8080"、特定IPなら "192.168.x.x:8080" と記述

    address := "127.0.0.1:8080" 

    fmt.Printf("Starting server at http://%s\n", address)


    // サーバーの起動

    if err := http.ListenAndServe(address, nil); err != nil {

        log.Fatal(err)

    }

}


0 件のコメント:

コメントを投稿