ホームページ >バックエンド開発 >Golang >Native Go は URL パラメーターを処理できますか?

Native Go は URL パラメーターを処理できますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-12 14:37:02883ブラウズ

Can Native Go Handle URL Parameters?

ネイティブ Go での URL パラメーターのマッピング

ネイティブ Go はインライン URL パラメーターを処理できますか? URL http://localhost:8080/blob/123/test を考えてみましょう。これは /blob/{id}/test にマッピングすることを目的としています。この質問では、外部ライブラリに依存せずに、そのようなマッピングに対する Go のネイティブ機能を検討します。

ネイティブ アプローチ:

ネイティブ Go は、このタスク用の単純なメカニズムを提供しません。ただし、手動での実装は比較的簡単です。

次の関数 getCode() は、リクエスト URL を解析し、パスの最初の部分からコードを抽出します。

func getCode(r *http.Request, defaultCode int) (int, string) {
        p := strings.Split(r.URL.Path, "/")
        if len(p) == 1 {
                return defaultCode, p[0]
        } else if len(p) > 1 {
                code, err := strconv.Atoi(p[0])
                if err == nil {
                        return code, p[1]
                } else {
                        return defaultCode, p[1]
                }
        } else {
                return defaultCode, ""
        }
}
  • strings.Split 関数はパスを複数の部分に分割します。
  • 部分が 1 つだけの場合は、デフォルトのコードと唯一の部分を返します。
  • 複数の部分がある場合は、コードの変換を試みます。最初の部分を整数 (コード) に変換します。成功した場合は、コードと 2 番目の部分を返します。そうでない場合は、デフォルトのコードと 2 番目の部分を返します。
  • それ以外の場合は、デフォルトのコードと空の文字列を返します。

この関数は、ネイティブで URL パラメータをマップする基本的な方法を提供します。 Go を使用すると、/blob/{id}/test などの URL を効果的に操作できるようになります。

以上がNative Go は URL パラメーターを処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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