ホームページ >バックエンド開発 >Golang >Web ページと API ルートを同じポート上で異なるパターンで提供するにはどうすればよいですか?

Web ページと API ルートを同じポート上で異なるパターンで提供するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-15 19:53:03746ブラウズ

How to Serve Web Pages and API Routes on the Same Port with Different Patterns?

同じポートで異なるパターンで Web ページと API ルートを提供する

Web アプリケーションでは、多くの場合、静的 Web ページと静的な Web ページの両方を提供することが望まれます。 API は同じポート アドレスを使用してルーティングします。これを実現するには、net/http パッケージが提供するパターン マッチング機能を利用できます。

ルート URL (「/」) のファイル ハンドラーを登録すると、指定されたディレクトリから静的コンテンツが提供されます。例:

fs := http.FileServer(http.Dir("server/webapps/play_maths"))
http.Handle("/", fs)

API ルートを提供するには、mux.Router のようなルーターを使用して別のハンドラーを作成できます。例:

func UserRoutes() *mux.Router {
    router := mux.NewRouter().StrictSlash(true)
    router.HandleFunc("/user/create", api.CreateUser)
    router.HandleFunc("/user/get/all", api.GetAllUsers)
    return router
}

この API ルーターを特定のパターンで登録すると、異なるパスの API リクエストを処理できるようになります。例:

http.Handle("/api", UserRoutes())

net/http のドキュメントによると、長いパターンが短いパターンよりも優先されます。これは、「/api/」で始まるリクエストは API ルーターによって処理され、その他のリクエストはファイル ハンドラーに送られることを意味します。

このアプローチでは、潜在的な競合を防ぐために慎重な考慮が必要であることに注意してください。たとえば、静的ファイルが「/api/」ディレクトリ内に配置された場合、API パターンが優先されるため、それらのファイルにはアクセスできなくなります。

以上がWeb ページと API ルートを同じポート上で異なるパターンで提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。