>  기사  >  백엔드 개발  >  golang은 http 라우팅을 구현합니다.

golang은 http 라우팅을 구현합니다.

WBOY
WBOY원래의
2023-05-09 22:44:07856검색

웹 개발에서 라우팅은 매우 중요한 개념입니다. 라우팅은 요청 처리 방법을 결정하며 웹 프레임워크의 중요한 부분입니다. 이 기사에서는 Golang을 사용하여 HTTP 라우팅을 구현하는 방법을 소개합니다.

Golang은 Google에서 출시한 새로운 프로그래밍 언어로 단순성, 효율성, 보안이 특징이며 동시 프로그래밍을 지원합니다. 웹 개발에 매우 ​​적합한 프로그래밍 언어입니다. 따라서 이 기사에서는 HTTP 라우팅을 구현하기 위한 프로그래밍 언어로 Golang을 사용합니다.

  1. 소개

HTTP 라우팅은 애플리케이션이 사용자 요청을 핸들러에 매핑하는 프로세스입니다. 요청이 웹 서버에 도착하면 요청의 URL과 HTTP 메서드(GET, POST, PUT 등)를 기반으로 핸들러를 찾아 해당 핸들러에 요청을 전달합니다. HTTP 라우팅은 웹 애플리케이션의 핵심이며 사용자가 애플리케이션과 상호 작용하는 방식을 결정합니다.

Golang에서는 HTTP 라우팅을 다양한 방식으로 구현할 수 있습니다. 그중 가장 일반적으로 사용되는 것은 표준 라이브러리의 http 패키지와 타사 패키지 mux입니다.

  1. 표준 라이브러리의 http 패키지

Golang 표준 라이브러리에는 HTTP 클라이언트와 HTTP 서버 구현을 제공하는 http라는 패키지가 있습니다. 이 패키지에는 http.HandleFunc 함수가 제공됩니다. 이 함수를 호출하면 라우팅 테이블에 함수를 등록할 수 있다.

이 함수에는 두 개의 매개변수가 필요합니다. 첫 번째는 문자열 유형 라우팅 주소이고 두 번째는 http.HandlerFunc 프로토콜을 준수해야 합니다.

예는 다음과 같습니다.

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, Golang HTTP server!")
}

위 코드에서는 HTTP 요청을 수락하고 "Hello, Golang HTTP 서버!"를 클라이언트에 다시 보내는 핸들러 함수가 정의됩니다. 그런 다음 http.HandleFunc() 함수를 사용하여 URL "/"에 핸들러 함수를 등록하고 http.ListenAndServe() 함수를 사용하여 HTTP 서버를 시작합니다.

이 코드 줄을 사용하면 서버가 로컬로 포트 8080을 수신할 수 있으며 이 포트로 들어오는 모든 요청은 처리를 위해 http 패키지로 전달됩니다.

이 프로그램을 명령줄에서 실행하고 http://localhost:8080/ 웹페이지를 열면 "Hello, Golang HTTP server!"라는 메시지가 나타납니다.

  1. 타사 패키지 mux

http 패키지는 기본 라우팅 기능을 구현하지만 다중 HTTP 메소드 및 다중 매개변수와 같은 고급 라우팅 기능을 지원할 만큼 유연하지 않습니다. 따라서 실제 개발에서는 일반적으로 타사 라우팅 패키지가 사용되며 그 중 mux가 더 널리 사용됩니다.

mux는 Golang에서 HTTP 요청을 처리하는 데 사용할 수 있는 강력한 HTTP 요청 라우터 및 스케줄러입니다. mux는 정규식 일치, 미들웨어 등을 포함한 다양한 고급 라우팅 기능을 제공합니다.

예는 다음과 같습니다.

package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

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

    r.HandleFunc("/", homeHandler).Methods(http.MethodGet)

    r.HandleFunc("/products", productsHandler).Methods(http.MethodGet)
    r.HandleFunc("/products/{key}", productHandler).Methods(http.MethodGet)

    http.ListenAndServe(":8080", r)
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Home Page")
}

func productsHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Product Page")
}

func productHandler(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    key := vars["key"]
    fmt.Fprintf(w, "Product ID: %s", key)
}

위의 예에서는 mux.NewRouter() 함수를 사용하여 새 라우터를 생성합니다.

r.HandleFunc() 함수를 사용하여 라우터에 라우팅 규칙을 추가하세요.

컨테이너가 시작된 후 브라우저가 http://localhost:8080/을 입력하는 GET 요청과 정확히 일치합니다. 그런 다음 라우터는 "/" 경로를 일치시키고 homeHandler() 함수를 호출합니다.

컨테이너가 시작된 후 브라우저가 입력한 http://localhost:8080/products의 GET 요청과 정확히 일치하면 라우터는 "/products" 경로를 일치시키고 productsHandler() 함수를 호출합니다.

컨테이너가 시작된 후 브라우저가 입력한 http://localhost:8080/products/123의 GET 요청과 정확히 일치하면 라우터는 "/products/{key}" 경로를 일치시키고 productHandler( ) 함수, 여기서 "123 "은 변수 "key"의 값입니다.

  1. 요약

이 글에서는 Golang을 사용하여 HTTP 라우팅을 구현하는 두 가지 방법, 즉 표준 라이브러리 http 패키지와 타사 라우팅 패키지 mux를 소개합니다. 표준 라이브러리의 http 패키지는 간단하고 사용하기 쉽지만 고급 라우팅 기능을 지원할 만큼 유연하지는 않습니다. 따라서 실제 개발에서는 다양한 웹 애플리케이션의 요구 사항을 충족할 수 있는 풍부한 라우팅 규칙과 고급 기능을 제공하는 타사 라우팅 패키지 mux를 사용하는 것이 좋습니다.

위 내용은 golang은 http 라우팅을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.