レスポンスヘルパーとステータスコード
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") // downloadc.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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Ginルーターとルートグループ
- リクエストバインディングとバリデーション
- レスポンスヘルパーとステータスコード
- Ginミドルウェア:認証とロギング