인터셉터는 메소드 실행 전후에 사용자 정의 동작을 삽입할 수 있는 디자인 패턴입니다. Go에서는 net/http 미들웨어를 통해 구현할 수 있습니다. 확장성, 재사용성, 테스트 가능성 등의 장점이 있으며 인증, 권한 부여, 캐싱, 로깅 및 사용자 지정 오류 처리와 같은 시나리오에서 사용할 수 있습니다.
소개
인터셉터는 메서드 실행 전후에 사용자 정의 동작을 삽입할 수 있는 디자인 패턴입니다. Go에서는 net/http
미들웨어를 작성하여 인터셉터를 구현할 수 있습니다. net/http
中间件实现。
具体实现
以下是一个使用 net/http
编写拦截器的示例:
package main import ( "fmt" "log" "net/http" ) func main() { // 创建一个新的中间件函数 logMiddleware := func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { log.Println("Request received:", r.URL.Path) // 调用下一个处理程序 next.ServeHTTP(w, r) }) } // 创建一个新的 HTTP 处理程序 mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, World!") }) // 将中间件应用到处理程序 http.Handle("/", logMiddleware(mux)) // 启动 HTTP 服务器 log.Println("Listening on port 8080") http.ListenAndServe(":8080", nil) }
原理
该拦截器使用 net/http.HandlerFunc
创建一个新的 HTTP 处理程序。此处理程序在请求到达原始处理程序之前和之后执行。在我们的示例中,logMiddleware
특정 구현
다음은net/http
를 사용하여 인터셉터를 작성하는 예입니다. rrreee
net/http.HandlerFunc 새로운 HTTP 핸들러를 생성합니다. 이 핸들러는 요청이 원래 핸들러에 도달하기 전후에 실행됩니다. 이 예에서 <code>logMiddleware
는 핸들러가 요청을 수신하고 다음 핸들러를 호출하기 전에 수신된 요청을 기록합니다.
인증 및 권한 부여
위 내용은 Golang의 인터셉터 메커니즘 이해하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!