カテゴリ: Go言語 更新日: 2025/11/14

Go言語でHTTPステータスコードを正しく設定する基本!初心者でもわかるWeb開発

Go言語のHTTPステータスコードを正しく設定する基本
Go言語のHTTPステータスコードを正しく設定する基本

先生と生徒の会話形式で理解しよう

生徒

「先生、Go言語でWebアプリを作っているんですが、HTTPステータスコードって何ですか?」

先生

「HTTPステータスコードは、Webサーバーからブラウザやクライアントに返す数字で、リクエストが成功したか、エラーが発生したかを示します。」

生徒

「例えばどんなコードがありますか?」

先生

「例えば、成功した場合は200、ページが見つからない場合は404、サーバーエラーの場合は500などがあります。」

生徒

「なるほど。Go言語ではどうやって設定するんですか?」

先生

「それでは、基本的な使い方を順番に見ていきましょう。」

1. Go言語でHTTPステータスコードを返す方法

1. Go言語でHTTPステータスコードを返す方法
1. Go言語でHTTPステータスコードを返す方法

Go言語の標準ライブラリにはnet/httpパッケージがあり、http.ResponseWriterを使ってHTTPステータスコードを設定できます。WriteHeaderメソッドでコードを指定し、その後にレスポンス本文を書きます。


package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK) // 200 OK
    fmt.Fprintln(w, "リクエストは成功しました!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

この例では、http.StatusOKを使って200ステータスを返しています。WriteHeaderはレスポンス本文より前に呼ぶ必要があります。

2. よく使うHTTPステータスコード一覧

2. よく使うHTTPステータスコード一覧
2. よく使うHTTPステータスコード一覧

HTTPステータスコードは大きく5つのカテゴリに分かれます。1xxは情報、2xxは成功、3xxはリダイレクト、4xxはクライアントエラー、5xxはサーバーエラーです。代表的なコードをいくつか紹介します。

  • 200 OK:リクエスト成功
  • 201 Created:新しいリソースが作成された
  • 400 Bad Request:リクエストが不正
  • 401 Unauthorized:認証が必要
  • 403 Forbidden:アクセス禁止
  • 404 Not Found:ページが見つからない
  • 500 Internal Server Error:サーバー内部エラー

Go言語では、これらのコードに対応する定数がhttp.StatusOKhttp.StatusNotFoundなどとして用意されており、数字を直接書くより可読性が高くなります。

3. ステータスコードによるエラーハンドリング

3. ステータスコードによるエラーハンドリング
3. ステータスコードによるエラーハンドリング

クライアントからのリクエストに問題がある場合は、適切なステータスコードを返してエラーを伝えることが重要です。


func errorHandler(w http.ResponseWriter, r *http.Request) {
    path := r.URL.Path
    if path != "/ok" {
        w.WriteHeader(http.StatusNotFound) // 404 Not Found
        fmt.Fprintln(w, "ページが見つかりません")
        return
    }
    w.WriteHeader(http.StatusOK)
    fmt.Fprintln(w, "正常にアクセスできました")
}

この例では、リクエストURLが"/ok"でなければ404を返し、正常なら200を返します。これにより、ブラウザやAPIクライアントに正しい情報を伝えられます。

4. JSONレスポンスとステータスコードの組み合わせ

4. JSONレスポンスとステータスコードの組み合わせ
4. JSONレスポンスとステータスコードの組み合わせ

APIを作る場合、JSONレスポンスとステータスコードを組み合わせることがよくあります。Goではencoding/jsonパッケージを使ってJSONを返すことができます。


import (
    "encoding/json"
)

type Response struct {
    Message string `json:"message"`
}

func jsonHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(http.StatusOK)
    json.NewEncoder(w).Encode(Response{Message: "JSONレスポンス成功"})
}

このようにWriteHeaderでステータスコードを設定し、JSON形式でレスポンスを返すことで、クライアントに正しい情報と状態を伝えられます。

5. 注意点とベストプラクティス

5. 注意点とベストプラクティス
5. 注意点とベストプラクティス
  • WriteHeaderはレスポンス本文を書く前に必ず呼ぶ
  • HTTPステータスコードは意味に沿って正しく設定する(成功は2xx、エラーは4xx/5xxなど)
  • API開発では、ステータスコードとレスポンス内容を一貫させる
  • 数字より定数(http.StatusOKなど)を使うと可読性が向上

正しいステータスコードの設定は、WebアプリやAPIの信頼性を高め、開発や運用の効率化にも繋がります。

カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Swift入門ガイド|基本構文と書き方をマスターしよう
No.3
Kotlin・Go・Swift記事の人気No3
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.8
Kotlin・Go・Swift記事の人気No8
Kotlinの拡張関数で繰り返し処理を効率化!初心者でもわかるforEachやmapの活用例