ゴーファーライト
皆さん、まず私たちのプロジェクトを利用することを選んでいただきありがとうございます。小さい体ですが、とても熱心にやっていただきました!使用を開始するには、まず go をインストールする必要があります。すでにインストールされているものとします。次に、フレームワークの主要モジュールである req と router
をインストールします。
go get github.com/BrunoCiccarino/GopherLight/router go get github.com/BrunoCiccarino/GopherLight/req
もうダウンロードしましたか?ふう!これで、最初の Hello World を作成できます。
package main import ( "fmt" "github.com/BrunoCiccarino/GopherLight/router" "github.com/BrunoCiccarino/GopherLight/req" ) func main() { app := router.NewApp() // Define a route that responds to a GET request at "/hello". app.Get("/hello", func(r *req.Request, w *req.Response) { w.Send("Hello, World!") }) fmt.Println("Server listening on port 3333") app.Listen(":3333") }
とてもシンプルですよね? GopherLight でできることはさらにたくさんあります。 HTTP メソッドとリクエストおよびレスポンス ツールの詳細については、読み続けてください。
サポートされている HTTP メソッド
router.App で使用できる HTTP メソッドのリストは次のとおりです。これらのそれぞれを使用して、さまざまな種類のリクエストを処理するルートを設定できます。飛び込んでみましょう!
何も変更せずにデータを取得します。
例: アイテムのリストの取得またはユーザーの詳細の読み取り。
データを送信して新しいリソースを作成します。
例: フォームの送信またはリストへの新しい項目の追加。
使用法: app.Put(パス、ハンドラー)
リソースを更新または置換します。これは「上書き」アクションです。
例: 完全なユーザー プロファイルを更新します。
使用法: app.Delete(パス、ハンドラー)
リソースを削除します。
例: ユーザーの削除または投稿の削除
使用法: app.Patch(パス、ハンドラー)
リソースをすべて置き換えずに部分的に更新します。
例: ユーザー プロファイルの電子メールのみを更新します。
使用法: app.Options(パス、ハンドラー)
主に CORS プリフライト リクエストに対して、URL に対して許可された HTTP メソッドを返します。
使用法: app.Head(パス、ハンドラー)
GET と似ていますが、応答本文はありません。リソースが存在するかどうかを確認するために使用します。
使用法: app.Connect(パス、ハンドラー)、app.Trace(パス、ハンドラー)
高度な方法: CONNECT はトンネル (SSL 用) を設定し、TRACE はデバッグ用であり、リクエストをエコーバックします。
ルートを確認したところで、受信したリクエストを処理し、レスポンスを送信するための頼りになるヘルパーである、Request オブジェクトと Response オブジェクトについて話しましょう。
各リクエスト ハンドラーは、受信リクエストに関する情報がロードされた Request オブジェクトを取得します。これでできることは次のとおりです:
go get github.com/BrunoCiccarino/GopherLight/router go get github.com/BrunoCiccarino/GopherLight/req
Response オブジェクトは、クライアントに応答を送り返すのに役立ちます。できることは次のとおりです:
package main import ( "fmt" "github.com/BrunoCiccarino/GopherLight/router" "github.com/BrunoCiccarino/GopherLight/req" ) func main() { app := router.NewApp() // Define a route that responds to a GET request at "/hello". app.Get("/hello", func(r *req.Request, w *req.Response) { w.Send("Hello, World!") }) fmt.Println("Server listening on port 3333") app.Listen(":3333") }
Go Web アプリに本格的な機能を追加できるように、一連のミドルウェアが用意されています。これらのミドルウェアはそれぞれ、セキュリティ、ロギング、タイムアウトなど、独自の魔法をもたらします。一つずつ分解してみましょう。 ?
当社の AuthMiddleware は、JSON Web Token (JWT) を使用してルートを保護するのに役立ちます。柔軟性があり、秘密キー、エラー処理、トークン抽出方法をカスタマイズできます。
セットアップ
まず、JWTConfig:
app.Get("/greet", func(r *req.Request, w *req.Response) { name := r.QueryParam("name") if name == "" { name = "stranger" } w.Send("Hello, " + name + "!") })
クロスオリジンリクエストを許可する必要がありますか?問題ない! CORSMiddleware は、クロスオリジン リソース共有 (CORS) 設定を構成して、他のドメインから API にアクセスできるようにします。
設定オプション
app.Get("/user", func(r *req.Request, w *req.Response) { user := map[string]string{"name": "Gopher", "language": "Go"} w.JSON(user) })
当社の CSRFMiddleware は、各リクエストで送信された CSRF トークンを検証することにより、クロスサイト リクエスト フォージェリを防ぎます。 GenerateCSRFToken() を使用して安全なトークンを作成し、独自の isValidToken 関数で検証します。
import ( "github.com/BrunoCiccarino/GopherLight/middleware" ) config := middleware.JWTConfig{ SecretKey: []byte("your_secret_key"), } app.Use(middleware.NewAuthMiddleware(config))
次のコマンドを使用してトークンを生成することを忘れないでください。
go get github.com/BrunoCiccarino/GopherLight/router go get github.com/BrunoCiccarino/GopherLight/req
サーバーで何が起こっているかを追跡したいですか? LoggingMiddleware は、メソッド、パス、所要時間を含む各リクエストをログに記録します。これは、アプリのパフォーマンスや異常なアクティビティに関する情報を入手できる優れた方法です。
package main import ( "fmt" "github.com/BrunoCiccarino/GopherLight/router" "github.com/BrunoCiccarino/GopherLight/req" ) func main() { app := router.NewApp() // Define a route that responds to a GET request at "/hello". app.Get("/hello", func(r *req.Request, w *req.Response) { w.Send("Hello, World!") }) fmt.Println("Server listening on port 3333") app.Listen(":3333") }
各リクエストは次のように記録されます:
TimeoutMiddleware を使用してリクエストの処理に時間制限を設定することで、こうした無限の待機を回避します。このミドルウェアは、時間内に完了しない場合はリクエストをキャンセルし、504 ゲートウェイ タイムアウト ステータスをクライアントに送信します。
app.Get("/greet", func(r *req.Request, w *req.Response) { name := r.QueryParam("name") if name == "" { name = "stranger" } w.Send("Hello, " + name + "!") })
プラグイン インターフェイスは非常にシンプルですが、非常に強力です。登録する方法は 1 つだけです。これにより、アプリのルーティング システムに接続して、新しい API エンドポイント、Webhook、その他想像できるあらゆるルートを追加できます。
登録方法
これがプラグイン インターフェースのすばらしい部分です:
app.Get("/user", func(r *req.Request, w *req.Response) { user := map[string]string{"name": "Gopher", "language": "Go"} w.JSON(user) })
Register メソッドは、以下を指定することでプラグインに新しいルートを定義できるルート関数を受け入れます。
ユーザーに挨拶するために、/hello-plugin に単純なエンドポイントを追加するプラグインを作成するとします。プラグインは次のようになります:
import ( "github.com/BrunoCiccarino/GopherLight/middleware" ) config := middleware.JWTConfig{ SecretKey: []byte("your_secret_key"), } app.Use(middleware.NewAuthMiddleware(config))
プラグインをロードするには、インスタンスを作成し、メインのアプリ設定で Register を呼び出すだけです。
corsOptions := middleware.CORSOptions{ AllowOrigin: "*", AllowMethods: []string{"GET", "POST"}, } app.Use(middleware.CORSMiddleware(corsOptions))
各プラグインは、必要なだけルートを追加できます。 Register 関数で Route を複数回呼び出すだけで、追加のエンドポイントを定義できます。さまざまな HTTP メソッド、パス、ハンドラーを使用して、プラグインの機能を自由に形作ります。
以上がGopherLight を使用して Go でプロのように API を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。