찾다
백엔드 개발GolangGo 언어로 라우팅 미들웨어를 구현하는 방법
Go 언어로 라우팅 미들웨어를 구현하는 방법Dec 17, 2023 pm 05:28 PM
미들웨어라우팅성취하다

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
如何在 Windows 11 上检查 NAT 类型如何在 Windows 11 上检查 NAT 类型Apr 13, 2023 pm 10:22 PM

延迟死亡是在线游戏玩家可能发生的最糟糕的事情。但是您知道吗,它并不总是由网速慢引起的?与流行的看法相反,这通常是您的 NAT 类型的问题,并且不会通过简单地致电您的互联网服务提供商来解决。什么是 NAT,它有什么作用?网络地址转换或 NAT 是一种网络系统,它提供了一种将本地 IP 地址修改为更广泛的互联网地址的方法。这就是您能够在同一本地网络上的许多设备上使用单个 IP 地址的方式。NAT 作为路由器的一部分,基本上将您的路由器变成本地网络和更广泛的互联网之间的中间管理者。但是,不只有一个 N

Wi-Fi 没有有效的 IP 配置:如何修复Wi-Fi 没有有效的 IP 配置:如何修复Apr 13, 2023 pm 06:22 PM

重启你的电脑和路由器你知道该怎么做; 如果您致电 ISP 技术支持,他们会要求您重新启动网络硬件。这是有充分理由的,因为重新启动您的 PC 将清除可能与您的连接发生冲突的正在运行的应用程序和缓存。重新启动(反弹)您的路由器(通常是包含路由器和调制解调器的组合单元)将清除其缓存并重新建立可靠的在线连接。如果您还有一个单独的调制解调器,也请重新启动它。通过拔下电源按钮30 秒重新启动路由器,然后将其重新插入。启动路由器后,重新启动 PC 并查看您是否重新获得稳定的 Wi-Fi 连接。重新启用 Wi-

使用设置应用程序或路由器在 iPhone 上查找 Mac 地址的 5 大方法使用设置应用程序或路由器在 iPhone 上查找 Mac 地址的 5 大方法Apr 13, 2023 pm 05:46 PM

任何连接到互联网的设备都有两种类型的地址——物理地址和互联网地址。虽然 Internet 地址在全球范围内定位设备,但物理地址有助于识别连接到本地网络的特定设备。这个物理地址在技术上称为 MAC 地址,如果您想知道您的 iPhone 是否有一个,是的,所有手机(包括 iPhone)都有自己独有的 MAC 地址。什么是 MAC 地址?媒体访问控制或 MAC 地址是一种独特的指标,用于从连接到同一网络的其他设备中识别您的设备。如果您拥有可以连接到互联网的设备,它将注册一个 MAC 地址。此地址由占

解决“Windows 11 上的 DNS 服务器未响应”问题的 12 种方法解决“Windows 11 上的 DNS 服务器未响应”问题的 12 种方法Apr 15, 2023 pm 10:46 PM

什么是DNS?DNS是域名系统的首字母缩写词,它是一个分散的命名系统,所有计算机、服务器和更多试图连接到互联网的设备都使用它。DNS有助于识别您的PC和发送到它的流量,系统会自动破译并显示必要的信息。为什么我在Windows11上收到“DNS服务器没有响应”?这个问题可能有很多原因。有时,Windows可能会将网络问题误认为是DNS问题,而有时它很可能是第三方应用程序干扰了您的网络。最近对AVG防病毒软件的更新似乎是导致此问题的主要原因,禁用该更新似乎可以解决大多数用户的此问题

linux添加路由命令是什么linux添加路由命令是什么Jan 04, 2023 pm 01:49 PM

linux添加路由命令是“route”,linux添加路由的方法是:1、在“/etc/rc.local”里添加“route add -net 192.168.2.0/24 gw 192.168.3.254”;2、在“/etc/sysconfig/network”里添加“GATEWAY=gw-ip”到末尾;3、在“static-router”添加“any net ...”即可。

如何在 Windows 11 / 10 上解决无互联网安全问题如何在 Windows 11 / 10 上解决无互联网安全问题May 11, 2023 pm 10:07 PM

在Windows11/10计算机上看到的与互联网连接相关的问题之一是“无互联网,安全”错误消息。基本上,此错误消息表明系统已连接到网络,但由于连接存在问题,您无法打开任何网页并接收数据。在Windows中连接到任何网络时可能会遇到此错误,最好是在通过不在附近的WiFi路由器连接到Internet时。通常,当您检查系统托盘右下方的无线图标时,会看到一个黄色的小三角形,当您单击它时,会显示无Internet,安全消息。出现此错误消息没有具体原因,但配置设置的更改可能会导致您的路由器无法连接

用 NTP 时间服务器错误修复路由器失去联系的 3 种方法用 NTP 时间服务器错误修复路由器失去联系的 3 种方法May 22, 2023 pm 03:43 PM

连接和WiFi的问题可能会非常令人沮丧并显着降低生产力。计算机使用网络时间协议(NTP)进行时钟同步。在大多数情况下(如果不是全部),您的笔记本电脑使用NTP来跟踪时间。如果您的服务器因NTP时间服务器错误消息而失去联系,请阅读本文到底以了解如何修复它。当路由器的时间设置不正确时会发生什么?路由器的性能通常不受时间设置错误的影响,因此您的连接可能不会受到影响。但是,可能会出现一些问题。这些包括:使用路由器作为本地时间服务器的所有小工具的时间不正确。路由器日志数据中的时间戳将是错误的。如果由于

修复:以太网在 Windows 11 中没有有效的 IP 配置修复:以太网在 Windows 11 中没有有效的 IP 配置Apr 14, 2023 am 10:01 AM

多年来,关于使用以太网还是 Wi-Fi 的争论一直在激烈进行,每一种都比另一种具有一定的优势。但是,两者都不是完全没有错误的。常见的一种情况是以太网在 Windows 11中没有有效的 IP 配置。该错误并不常见,但遇到时,用户无法访问 Internet。这使得有效地对其进行故障排除变得更加重要。但是还有一个重要的问题需要事先回答,即为什么以太网在 Windows 11中没有有效的 IP 配置?因此,让我们带您了解它的答案以及最有效的错误修复方法。为什么以太网在 Windows 11 中没有有效

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구