中間ハンドラー関数を使用してリクエストをルーティングする

ザックス:

標準ライブラリでルーティングを行う方法を考えていました。リクエストのタイプに応じて他のハンドラー関数を呼び出すハンドラー関数があることは有効ですか?例えば

func main() {
    m := http.NewServeMux()
    m.HandleFunc("/books", books)
    // ...
}

func books(w http.ResponseWriter, r *http.Request) {
    switch r.Method {
        case "GET":
            getBooks(w, r)
        case "POST":
            createBook(w, r)
    }
}

これは良い習慣ですか?関数が少しわかりやすいので、カスタムハンドラーを宣言したくありませんでした。

マーティントゥルノイ:

はい、これは完全に有効です。ハンドラーは単なる関数であるため、そうすべきでない理由はありません。実際、これが通常のミドルウェアの実装方法です

ハンドラー関数には「魔法」はまったくありません。正しいファイル記述子(w http.ResponseWriter)に書き込んでいる限り、何でもできます。

これは、このパターンを使用することがすべてのアプリケーションにとって必ずしも良いアイデアであることを意味するわけではありません-ルーティングライブラリが理由のために存在します-小さなプログラムではそれはうまく機能します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

golang http:リクエストをハンドラーにルーティングする方法

分類Dev

libcurlを使用して複数のNICを介してクライアントHTTPリクエストをルーティングする方法

分類Dev

クリックハンドラーを使用して関数内のグローバルスコープ変数を変更する

分類Dev

文字列関数を使用してセル内のハイパーリンクテキストを変更する

分類Dev

サードパーティのルーティングライブラリなしでPUTリクエストをルーティングする

分類Dev

シリアライザークラスの中間テーブルフィールドを使用してデータベースエントリを作成するにはどうすればよいですか?

分類Dev

EXTRACTステートメントoracleを使用してクエリをフィルタリングする方法

分類Dev

シングルアクティビティアプリで短剣スコープを使用してフラグメント間でViewModelを共有する

分類Dev

エキスパンド関数を使用してシェルスクリプトコードを理解する

分類Dev

UIAlertActionハンドラーを使用して別のストーリーボードにセグエする方法:

分類Dev

Spring WebFlux:クエリパラメーターに基づいて別のハンドラー関数にルーティングする方法は?

分類Dev

Spring JPAリポジトリを使用して複数のフィールドでエンティティをフィルタリングする方法は?

分類Dev

Terraformを使用して、セキュリティグループを複数のネットワークインターフェイスに関連付け、ロードバランサーを複数のサブネットに関連付けるAzure

分類Dev

トランザクション(TypeORM)で複数のオブジェクトを保存するために、エンティティリポジトリのグローバルインスタンスを使用しても安全ですか?

分類Dev

actix-webルートハンドラー関数内からリクエストを行おうとすると、エラー「BlockingClientInFutureContext」が発生します

分類Dev

エラスティックBeanstalkを使用してロードバランサーとWebサーバー間のトラフィックを暗号化する方法

分類Dev

Springのリアクティブハンドラー関数でリクエストの本文を抽出するにはどうすればよいですか?

分類Dev

ルーティング中にリクエストでパラメーターを渡す方法(Vaporを使用したサーバーサイドSwift)

分類Dev

ルーティング中にリクエストでパラメーターを渡す方法(Vaporを使用したサーバーサイドSwift)

分類Dev

ハンドラーjavafxを使用してテキストフィールドの最大値を制限する方法

分類Dev

jQueryajaxリクエストを使用してコードビハインドイベントハンドラーをトリガーする方法

分類Dev

インスタンスに対してOracleCloudが提供するコンピューティングメトリック以外のメトリック(スレッド数、ハンドル数)を取得するにはどうすればよいですか?

分類Dev

app.useがインポートされたミドルウェア関数を使用すると、express.jsapiリクエストがハングする

分類Dev

Go:異なるハンドラーを使用するか、リクエストコンテキストに変数を注入しますか?

分類Dev

Asp.Netを使用してクライアント側でハイパーリンクフィールドを使用してクエリ文字列にテキストボックス値を渡す方法

分類Dev

SQLクエリでMAX関数を使用してデータをフィルタリングする

分類Dev

サイファー-「STARTSWITH」を使用して複数のNeo4jノードプロパティフラグメントをクエリする方法

分類Dev

promiseを使用してAngularファクトリ関数がジャスミンでエラーをスローしていることをテストする方法

分類Dev

JQueryを使用してSAPUI5テンプレートハンドラーでスタイリングするための行にアクセスする

Related 関連記事

  1. 1

    golang http:リクエストをハンドラーにルーティングする方法

  2. 2

    libcurlを使用して複数のNICを介してクライアントHTTPリクエストをルーティングする方法

  3. 3

    クリックハンドラーを使用して関数内のグローバルスコープ変数を変更する

  4. 4

    文字列関数を使用してセル内のハイパーリンクテキストを変更する

  5. 5

    サードパーティのルーティングライブラリなしでPUTリクエストをルーティングする

  6. 6

    シリアライザークラスの中間テーブルフィールドを使用してデータベースエントリを作成するにはどうすればよいですか?

  7. 7

    EXTRACTステートメントoracleを使用してクエリをフィルタリングする方法

  8. 8

    シングルアクティビティアプリで短剣スコープを使用してフラグメント間でViewModelを共有する

  9. 9

    エキスパンド関数を使用してシェルスクリプトコードを理解する

  10. 10

    UIAlertActionハンドラーを使用して別のストーリーボードにセグエする方法:

  11. 11

    Spring WebFlux:クエリパラメーターに基づいて別のハンドラー関数にルーティングする方法は?

  12. 12

    Spring JPAリポジトリを使用して複数のフィールドでエンティティをフィルタリングする方法は?

  13. 13

    Terraformを使用して、セキュリティグループを複数のネットワークインターフェイスに関連付け、ロードバランサーを複数のサブネットに関連付けるAzure

  14. 14

    トランザクション(TypeORM)で複数のオブジェクトを保存するために、エンティティリポジトリのグローバルインスタンスを使用しても安全ですか?

  15. 15

    actix-webルートハンドラー関数内からリクエストを行おうとすると、エラー「BlockingClientInFutureContext」が発生します

  16. 16

    エラスティックBeanstalkを使用してロードバランサーとWebサーバー間のトラフィックを暗号化する方法

  17. 17

    Springのリアクティブハンドラー関数でリクエストの本文を抽出するにはどうすればよいですか?

  18. 18

    ルーティング中にリクエストでパラメーターを渡す方法(Vaporを使用したサーバーサイドSwift)

  19. 19

    ルーティング中にリクエストでパラメーターを渡す方法(Vaporを使用したサーバーサイドSwift)

  20. 20

    ハンドラーjavafxを使用してテキストフィールドの最大値を制限する方法

  21. 21

    jQueryajaxリクエストを使用してコードビハインドイベントハンドラーをトリガーする方法

  22. 22

    インスタンスに対してOracleCloudが提供するコンピューティングメトリック以外のメトリック(スレッド数、ハンドル数)を取得するにはどうすればよいですか?

  23. 23

    app.useがインポートされたミドルウェア関数を使用すると、express.jsapiリクエストがハングする

  24. 24

    Go:異なるハンドラーを使用するか、リクエストコンテキストに変数を注入しますか?

  25. 25

    Asp.Netを使用してクライアント側でハイパーリンクフィールドを使用してクエリ文字列にテキストボックス値を渡す方法

  26. 26

    SQLクエリでMAX関数を使用してデータをフィルタリングする

  27. 27

    サイファー-「STARTSWITH」を使用して複数のNeo4jノードプロパティフラグメントをクエリする方法

  28. 28

    promiseを使用してAngularファクトリ関数がジャスミンでエラーをスローしていることをテストする方法

  29. 29

    JQueryを使用してSAPUI5テンプレートハンドラーでスタイリングするための行にアクセスする

ホットタグ

アーカイブ