より詳細な、より良いメンテナンス
あなたがhereをチェックすることができるこのポストでわかるすべてのコード
最後のポストでは、我々のコントローラの応答にコンテンツを配信しましたが、あまりにも読めないコードです.このポストでは、我々はより読みやすく、我々のコンテンツを提供するために簡単にコードを再表示します.
CMD/HTTPフォルダ内でヘルパーと呼ばれる新しいフォルダを作成します.このパッケージは、HTTP層が我々のプロジェクトの他のハンドラーによって使用される要求と応答に対処するのを助けるためにグループ機能を利用します.
まず第一に、CMD/http/bookで我々のブックハンドラをrefactにしてください.どのように我々のゲールがそうであるかについて見てください
ヘルパーパッケージでは、レスポンスを作成します.を返します.ファイルを移動します.
3 -ここでは、より簡単な方法を開始します.
2 -我々は、応答にJSONデータを書きます
1 -今、私たちはプロセスを改善するために私たちのエラーメソッドを再確認します.
現時点でエラーを作成します.私たちのコードのための取引方法を作成するヘルパーフォルダーの内部に行く任意のエラーなしで動作します.
最後のポストでは、我々のコントローラの応答にコンテンツを配信しましたが、あまりにも読めないコードです.このポストでは、我々はより読みやすく、我々のコンテンツを提供するために簡単にコードを再表示します.
CMD/HTTPフォルダ内でヘルパーと呼ばれる新しいフォルダを作成します.このパッケージは、HTTP層が我々のプロジェクトの他のハンドラーによって使用される要求と応答に対処するのを助けるためにグループ機能を利用します.
まず第一に、CMD/http/bookで我々のブックハンドラをrefactにしてください.どのように我々のゲールがそうであるかについて見てください
func (f FeiraHandler) getAll(w http.ResponseWriter, r *http.Request) {
feiraFilter := getFilterQuery(r)
if results, err := f.service.GetAll(feiraFilter); err != nil {
helper.HandleError(w, err) //1
} else {
if results != nil && len(results) > 0 {
helper.JsonResponse(w, results, http.StatusOK) //2
} else {
helper.NoContent(w) //3
}
}
}
今ヘルパーは、エラーに対処し、応答データを使用するのに役立ちます.ヘルパーパッケージでは、レスポンスを作成します.を返します.ファイルを移動します.
3 -ここでは、より簡単な方法を開始します.
//cmd/http/helper/response.go
//...
func NoContent(w http.ResponseWriter) {
addDefaultHeaders(w)
w.WriteHeader(http.StatusNoContent)
}
我々は、デフォルトのヘッダーを追加し、コンテンツのステータスにヘッダーを送信します.2 -我々は、応答にJSONデータを書きます
//cmd/http/helper/response.go
//...
func JsonResponse(w http.ResponseWriter, data interface{}, httpStatus int) {
addDefaultHeaders(w)
w.WriteHeader(httpStatus)
writeData(w, data)
}
また、ヘルパーパッケージの新しい機能にデータを書き込むために、ボイラープレートコードを移動します.1 -今、私たちはプロセスを改善するために私たちのエラーメソッドを再確認します.
//cmd/http/helper/response.go
//...
func HandleError(w http.ResponseWriter, err error) {
addDefaultHeaders(w)
httpError := DealWith(err)
w.WriteHeader(httpError.Status)
if httpError.Status != http.StatusNoContent {
writeData(w, httpError)
}
}
このメソッドは、エラーが登録エラーまたはアプリケーションに予期しないエラーであるかどうかを確認します.現時点でエラーを作成します.私たちのコードのための取引方法を作成するヘルパーフォルダーの内部に行く任意のエラーなしで動作します.
//cmd/http/helper/error.go
//...
type HttpError struct {
Status int `json:"-"`
Description string `json:"description,omitempty"`
Messages []string `json:"messages,omitempty"`
}
func DealWith(err error) HttpError {
return HttpError{
Status: http.StatusInternalServerError,
Description: "Internal error, please report to admin",
}
}
次のポストでは、HTTP層でエラーを生成するより良い方法を知るために、DealWareメソッドを説明します.Reference
この問題について(より詳細な、より良いメンテナンス), 我々は、より多くの情報をここで見つけました https://dev.to/maaarkin/less-verbose-better-maintenance-3j9bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol