ホームページ  >  記事  >  バックエンド開発  >  Golang 関数を使用して Web リクエストのルーティングを処理する方法

Golang 関数を使用して Web リクエストのルーティングを処理する方法

WBOY
WBOYオリジナル
2024-05-02 10:18:01810ブラウズ

Golang では、関数を使用して Web リクエストのルーティングを処理することは、API を構築する拡張可能なモジュール式の方法です。これには次の手順が含まれます。 HTTP ルーター ライブラリをインストールします。ルーターを作成します。ルートのパス パターンとハンドラー関数を定義します。リクエストを処理し、レスポンスを返すハンドラー関数を作成します。 HTTP サーバーを使用してルーターを実行します。このプロセスにより、受信リクエストを処理する際のモジュール式アプローチが可能になり、再利用性、保守性、テスト容易性が向上します。

Golang 関数を使用して Web リクエストのルーティングを処理する方法

Golang 関数を使用して Web リクエストのルーティングを処理する方法

Golang では、関数を使用して Web リクエストのルーティングを処理する方法があります。 API を拡張およびモジュール化する一般的な方法。この記事では、HTTP ルーター ライブラリ (github.com/gorilla/mux など) を使用してルートを定義し、ハンドラー関数を使用して受信リクエストを処理する方法を説明します。

ステップ 1: HTTP ルーター ライブラリをインストールする

import "github.com/gorilla/mux"

ステップ 2: ルーターを作成する

router := mux.NewRouter()

ステップ3: ルートの定義

ルートのパス パターンを定義し、リクエストを処理するために使用される処理関数を指定します。例:

router.HandleFunc("/users", getUsers).Methods("GET") // GET /users 处理函数
router.HandleFunc("/users/{id}", getUser).Methods("GET") // GET /users/{id} 处理函数

ステップ 4: 処理関数を作成する

処理関数は、受信リクエストを処理して応答を返すために使用される関数です。以下は処理関数の例です:

func getUsers(w http.ResponseWriter, r *http.Request) {
  // 获取所有用户数据
  users := []User{
    {ID: 1, Name: "John"},
    {ID: 2, Name: "Jane"},
  }

  // 以 JSON 格式编码响应
  json, err := json.Marshal(users)
  if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
  }

  // 设置响应标头和状态代码
  w.Header().Set("Content-Type", "application/json")
  w.WriteHeader(http.StatusOK)

  // 写入响应主体
  w.Write(json)
}

ステップ 5: ルーターの実行

HTTP サーバーを使用してルーターを起動します。例:

srv := &http.Server{
  Handler: router,
  Addr:    ":8080",
}

if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
  log.Fatal(err)
}

実戦ケース

ユーザーを管理するための簡単な API を作成する:

package main

import (
  "github.com/gorilla/mux"
  "net/http"
)

type User struct {
  ID   int
  Name string
}

var users = []User{
  {1, "John"},
  {2, "Jane"},
}

func main() {
  router := mux.NewRouter()
  router.HandleFunc("/users", Get).Methods("GET")
  router.HandleFunc("/users/{id}", GetByID).Methods("GET")
  srv := &http.Server{
    Handler: router,
    Addr:    ":8080",
  }
  srv.ListenAndServe()
}

func Get(w http.ResponseWriter, r *http.Request) { json.Encode(w, users) }
func GetByID(w http.ResponseWriter, r *http.Request) {
  id := mux.Vars(r)["id"] // 从 URL 中提取参数
  for _, user := range users {
    if user.ID == id {
      json.Encode(w, user)
      return
    }
  }
  http.Error(w, "Not found", http.StatusNotFound)
}

このプログラムを実行すると、localhost との間の簡単な API を作成できます。 :8080/users および localhost パス:8080/users/{id} でユーザー情報を取得および取得します。

以上がGolang 関数を使用して Web リクエストのルーティングを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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