0Pricing
Go Academy · レッスン

レスポンスヘルパーとステータスコード

c.JSON、c.AbortWithError、エラーレスポンス

「レスポンスヘルパーとステータスコード」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。

c.JSON

c.JSON(statusCode, obj)はobjをJSONにシリアライズし、Content-Typeをapplication/jsonに設定します。最も一般的なレスポンスメソッドです。

c.JSON(http.StatusOK, gin.H{
    "id":   user.ID,
    "name": user.Name,
})

gin.H

gin.Hはmap[string]anyの省略記法です。構造体を定義せずに、その場でJSONオブジェクトを作成したい場合に使用します。

c.JSON(200, gin.H{"message": "created", "id": id})

HTTPステータス定数

わかりやすさのため、数値を直接指定する代わりにhttp.Status*定数を使用します。

c.JSON(http.StatusCreated, gin.H{"id": id})
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid input"})
c.JSON(http.StatusInternalServerError, gin.H{"error": "internal error"})

c.Stringとc.Data

c.Stringでプレーンテキストを、c.Dataで任意のバイト列を送信します。

c.String(200, "Hello, %s!", name)
c.Data(200, "application/octet-stream", fileBytes)

c.Fileとc.FileAttachment

ディスク上のファイルを、インライン表示またはダウンロードとして配信します。

c.File("./public/report.pdf")           // inline
c.FileAttachment("./report.pdf", "report.pdf") // download

c.Redirect

HTTPリダイレクトを送信します(301は恒久的、302は一時的なリダイレクトです)。

c.Redirect(http.StatusMovedPermanently, "/new-url")

c.AbortWithStatus

リクエストチェーンの処理を停止し、指定したステータスコードで空のレスポンスを書き込みます。c.JSONとは異なり、Abortを呼び出して後続のハンドラーが実行されないようにします。

c.AbortWithStatus(http.StatusUnauthorized)

c.Error

レスポンスを書き込まずに、エラーをコンテキストに追加します。ミドルウェアでこれらのエラーを収集し、最後に統一されたエラーレスポンスを書き込めます。

c.Error(fmt.Errorf("database error: %w", err))

レスポンスヘッダー

c.JSONまたはc.Dataを呼び出す前に、カスタムレスポンスヘッダーを設定します。

c.Header("X-Request-ID", requestID)
c.Header("Cache-Control", "max-age=3600")

XMLのレンダリング

GinはXMLとYAMLのレスポンスにも対応しています。

c.XML(200, user) // requires xml struct tags
c.YAML(200, user)

カスタムレスポンス構造体

すべてのエンドポイントでレスポンスの形を統一するため、標準的なAPIレスポンスのラッパーを定義します。

type APIResponse struct {
    Success bool   `json:"success"`
    Data    any    `json:"data,omitempty"`
    Error   string `json:"error,omitempty"`
}

クイックチェック

c.AbortWithStatusは、c.Statusと比べてどのように動作が異なるでしょうか。

まとめ:レスポンスヘルパー

重要なポイント:

  • c.JSON(statusCode, obj)は主要なJSONレスポンスメソッドです
  • わかりやすさのため、http.Status*定数を使用します
  • c.AbortWithStatusはハンドラーチェーンを停止します
  • すべてのエンドポイントに、一貫したAPIResponseラッパーを定義します

よくある質問

「レスポンスヘルパーとステータスコード」レッスンは無料ですか?

はい。「レスポンスヘルパーとステータスコード」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。

「レスポンスヘルパーとステータスコード」で何を学びますか?

c.JSON、c.AbortWithError、エラーレスポンス ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Go Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「レスポンスヘルパーとステータスコード」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGo Academyレッスンでコードを書いて実行できますか?

はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Ginルーターとルートグループ
  2. リクエストバインディングとバリデーション
  3. レスポンスヘルパーとステータスコード
  4. Ginミドルウェア:認証とロギング
← Go Academyに戻る