Gin は非常に優れた Golang Web フレームワークであり、API フレンドリーであるだけでなく、非常に高いパフォーマンスを備え、シンプルなデザインで簡単に始めることができます。そのため、これ (Gin) は非常に人気があり、Github には 33,000 個以上のスターがあり、私のお気に入りの Web フレームワークでもあります。
エントリー要件
Golang Gin フレームワークを使用したい場合は、Golang 言語を知っている必要があります。まだ学習を始めていない場合は、Golang 言語を強くお勧めします。この効率的で簡潔な言語は、21 世紀の C として知られています。以前は C /C++ 開発者だった方、おめでとうございます。もうすぐ始められます。PHP、Python、その他の言語の開発者であっても、Golang を使い始めるのに 1 週間もかかりません。
Golang言語の環境構成については、以前非常に詳しい記事を書きましたので、 Go言語環境の使い方の詳細な説明を直接参照してください 。
Go 言語の概要と詳細については、私の「Go 言語実践ノート」シリーズを参照してください。合計 28 の記事、15 ワード以上、0 から始まり、入門と詳細な Go 言語実践ノート (20 件) があります。 -Eight) | Go 追記。
ここと今後の記事で説明するコード例はすべて、次の環境に基づいています。
- Golang バージョン 1.13 (含む) 以降
- ジン バージョン 1.5 (含む) 以降
- macOS 64 ビット オペレーティング システム
- Goモジュールの開発方法
あなたが使用している Golang と Gin のバージョンが私のものと異なる場合、それは一定の影響を与える可能性がありますが、Golang はプラットフォーム間でコンパイルできるため、一般にオペレーティング システムに大きな違いはありません。
ネット/http
Golang (Go 言語) には HTTP サービスが組み込まれており、net/http
組み込みパッケージを通じて HTTP サービスを実装できます。
func main() {
http.HandleFunc("/",Index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
func Index(w http.ResponseWriter, r *http.Request){
fmt.Fprint(w,"Blog:www.flysnow.org\nwechat:flysnow_org")
}
これは非常に単純な HTTP サービスの実装です。このコード プログラムを実行し、ブラウザで URL を開くとhttp://localhost:8080
、次の情報が表示されます。
Blog:www.flysnow.org
wechat:flysnow_org
コードの観点から見ると、HTTP サービスの実装は非常に簡単です。これは Golang 言語の利点でもあります。最下層で多くのカプセル化が行われているため、関連サービスの実装が容易になります。
非常に便利でシンプルに見えますがnet/http
、多くの欠点もあります。
- 特定の処理関数をリクエストメソッド(POST、GETなど)ごとに個別に登録することはできません。
- パス変数パラメータはサポートされていません
- パラメータがうまく取得できない
- パラメータの検証はサポートされていません
- パラメータのバインディングはサポートされていません
- 複数の形式で出力するのにこれ以上優れたものはありません
- 平均的なパフォーマンス
- 不十分な拡張性
- ……
上記などはすべて当社の Web 開発でよく使用されるものであるため、自社開発で繰り返し実装するしかなく、効率に影響を与え、品質が低下します。開発者によってパフォーマンスが異なります。
現時点では、これらの繰り返しの作業を支援する Golang Web フレームワークが本当に必要であり、これが Golang Gin が行うことです。Golang Gin は非常に優れた Web フレームワークであり、その欠点を補ってくれるだけnet/http
でなく、日常の Web 開発に多くの機能を追加し、より効率的な Web 開発を行うことができます。
こんにちは、ジン
Gin の使用は、他のサードパーティの Golang ライブラリと同様に、非常に簡単です。開発ベースの場合は、 まず gin をダウンロードしてからインポートするGOPATH
必要があります。go get -u github.com/gin-gonic/gin
import
Go モジュールを使用する場合は、import
直接インポートを使用します。これを実行すると、パッケージがgo run
自動的にダウンロードされ、コンパイルされて使用されます。gin
もちろん、go mod tidy
依存モジュールをダウンロードすることもできます。
ここで例を使用して、Golang Gin の使用がいかに簡単であるかを見てみましょう。
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{
"Blog":"www.flysnow.org",
"wechat":"flysnow_org",
})
})
r.Run(":8080")
}
次に、それを実行し、ブラウザを開いて、http://localhost:8080/
次の内容を入力します。
{"Blog":"www.flysnow.org","wechat":"flysnow_org"}
JSON
フォーマットのコンテンツを出力するのがいかに簡単か見てください。これはプロジェクトでよく使用される API によって返されるフォーマットではないでしょうか? 特別なパッケージを必要とせずに簡単に実装でき、net/http
組み込みのものよりもはるかに優れています。
上記のコード例の説明は次のとおりです。
r := gin.Default()
これは、操作を容易にするためにデフォルトの gin サンプルをインスタンス化するためのものです。たとえば、/
GET アクセス (つまり、ホームページ) の処理関数を登録します。
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{
"Blog":"www.flysnow.org",
"wechat":"flysnow_org",
})
})
ご覧のとおり、Gin では特定の HTTP メソッドを別の方法で処理できるため、Restful API を実装するのに便利です。たとえば、この例では、POST メソッドを通じてリクエストすると、プロンプト 404 が表示されますhttp://localhost:8080/
。
上記の戻り値も非常にシンプルで、c.JSON
JSON 形式の文字列を返すメソッドであり、そのメソッド シグネチャは次のとおりです。
func (c *Context) JSON(code int, obj interface{})
code
返されるのはcontent ですが、ここで使用しているのは実際には操作を容易にするために宣言された型です。HTTP Status Code,
obj
gin.H
map[string]interface{},
H
type H map[string]interface{}
最後に、r.Run(":8080")
HTTP サービスを開始できます。ポートは である8080
ため、http://localhost:8080/
返された JSON コンテンツにアクセスして確認できます。
コードは非常にシンプルですが、多くの実装が含まれているため、ここでは簡単に説明しましたが、今後の記事で詳しく分析していきます。
まとめ
この記事はここで終わろうとしています。この記事で、私の記事がそれが何であるかだけでなく、なぜそうなるのかも知っているということを誰もが発見したと思います (実際、私の昔からの読者は全員これを知っています)。ジンの入門コードを書き、徐々にジンを浅いところから深いところまで紹介し、コードの説明と分析を行うことで、誰もがジンをよりよく理解し、記憶を深められるようになります。しかし、その理由を知るためでもあります。
また、Ginにはルーティングのグループ化、カスタムミドルウェア、自動クラッシュ処理など多くの機能が備わっています。以下の記事で一つずつ紹介していきます。