> 백엔드 개발 > Golang > Go 언어로 라우팅 미들웨어를 구현하는 방법

Go 언어로 라우팅 미들웨어를 구현하는 방법

王林
풀어 주다: 2023-12-17 17:28:00
원래의
1363명이 탐색했습니다.

Go 언어로 라우팅 미들웨어를 구현하는 방법

Go 언어로 라우팅 미들웨어를 구현하려면 구체적인 코드 예제가 필요합니다.

소개:

Go 언어로 웹 개발에 있어서 라우팅은 없어서는 안 될 부분입니다. 라우팅 미들웨어는 요청이 대상 처리 기능에 도달하기 전에 실행되는 기능 모듈입니다. 요청에 대한 가로채기, 확인, 기록 및 기타 작업을 수행할 수 있으므로 개발자가 몇 가지 공통 기능을 처리하고 코드 재사용성을 향상시키는 데 도움이 됩니다.

이 글에서는 Go 언어로 라우팅 미들웨어를 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

1. Gorilla/mux 라이브러리를 사용하여 라우팅 미들웨어 구현

  1. gorilla/mux 라이브러리 설치

gorilla/mux 라이브러리를 설치하려면 터미널에서 다음 명령을 실행하세요.

go get -u github.com/gorilla/mux
로그인 후 복사
  1. 라우팅 미들웨어 만들기

지금 시작해 보겠습니다. 라우팅 미들웨어를 만들려면 먼저 middleware.go라는 새 파일을 만들어 미들웨어 기능을 정의하세요.

package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func middleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // 在请求到达目标处理函数之前执行的操作
        
        fmt.Println("Executing middleware")

        // 调用下一个中间件或目标处理函数
        next.ServeHTTP(w, r)
    })
}

func main() {
    r := mux.NewRouter()

    // 使用我们的中间件
    r.Use(middleware)

    // 路由定义
    r.HandleFunc("/", homeHandler).Methods("GET")

    // 启动服务器
    http.ListenAndServe(":8080", r)
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello, World!")
}
로그인 후 복사

위 코드에서는 http.Handler 유형 옆의 매개변수를 허용하는 미들웨어라는 함수를 정의합니다. 새로운 http.Handler를 반환하여 대상 핸들러 함수를 래핑합니다. 래핑된 핸들러에서 사용자 정의 로직을 추가한 후 next.ServeHTTP(w, r)를 호출하여 요청을 다음 미들웨어 또는 대상 핸들러 함수에 전달할 수 있습니다.

기본 기능에서는 r.Use(미들웨어)를 통해 모든 경로에 미들웨어를 적용합니다.

  1. 코드 실행

코드를 실행하려면 터미널에서 다음 명령을 실행하세요.

go run main.go
로그인 후 복사
로그인 후 복사

이제 localhost:8080을 방문하면 콘솔에 "Executing middleware" 출력을 볼 수 있습니다.

2. net/http 라이브러리를 사용하여 라우팅 미들웨어 구현

타사 라이브러리를 사용하지 않는 경우 net/http 라이브러리를 사용하여 라우팅 미들웨어를 구현할 수도 있습니다.

다음은 특정 샘플 코드입니다.

package main

import (
    "fmt"
    "log"
    "net/http"
)

type MyHandler struct{}

func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    fmt.Println("Executing middleware")
    // 调用目标处理函数
    homeHandler(w, r)
}

func middleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // 在请求到达目标处理函数之前执行的操作
        fmt.Println("Executing middleware")
        next.ServeHTTP(w, r)
    })
}

func main() {
    mux := http.NewServeMux()

    // 创建中间件
    handler := middleware(&MyHandler{})

    // 设置路由
    mux.Handle("/", handler)

    // 启动服务器
    log.Fatal(http.ListenAndServe(":8080", mux))
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello, World!")
}
로그인 후 복사

위 코드에서는 http.Handler 유형 옆에 매개변수를 허용하는 middleware라는 함수를 정의합니다. 새로운 http.Handler를 반환하여 대상 핸들러 함수를 래핑합니다. 래핑된 핸들러에서 사용자 정의 로직을 추가한 후 next.ServeHTTP(w, r)를 호출하여 요청을 다음 미들웨어 또는 대상 핸들러 함수에 전달할 수 있습니다.

메인 함수에서는 새로운 ServeMux를 생성하고 mux.Handle("/", handler)를 사용하여 미들웨어를 루트 경로에 적용합니다.

  1. 코드 실행

코드를 실행하려면 터미널에서 다음 명령을 실행하세요.

go run main.go
로그인 후 복사
로그인 후 복사

이제 localhost:8080에 액세스하면 콘솔에 "Executing middleware" 출력이 표시됩니다.

결론:

위의 샘플 코드를 통해 Go 언어로 라우팅 미들웨어를 구현하는 방법을 배웠습니다. 라우팅 미들웨어는 타사 라이브러리를 사용하거나 net/http 라이브러리를 직접 사용하여 쉽게 구현할 수 있습니다. 이 기능은 몇 가지 일반적인 기능 요구 사항을 처리하고, 코드 재사용성을 향상시키며, 애플리케이션을 보다 유연하고 유지 관리하기 쉽게 만드는 데 도움이 될 수 있습니다. 이 기사가 도움이 되기를 바랍니다!

위 내용은 Go 언어로 라우팅 미들웨어를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿