golang 양식 제출 점프

WBOY
풀어 주다: 2023-05-14 17:29:08
원래의
681명이 탐색했습니다.

양식을 제출하고 해당 양식으로 점프하는 것은 Golang의 일반적인 작업입니다. 양식 제출은 사용자 등록, 검색, 데이터 추가 또는 업데이트 등과 같은 다양한 사용 사례에 사용될 수 있습니다. 이 기사에서는 기본 양식 제출자를 작성하는 방법과 점프를 처리하는 방법을 살펴보겠습니다.

양식 제출 구현

먼저 데이터를 제출하려면 간단한 HTML 양식이 필요합니다. 다음은 사용자 이름과 비밀번호가 포함된 간단한 양식입니다.

<html>
<head>
    <title>登录页面</title>
</head>
<body>
    <h1>欢迎来到我的网站</h1>
    <form action="/login" method="post">
        用户名: <input type="text" name="username"><br>
        密码: <input type="password" name="password"><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>
로그인 후 복사

이 양식은 POST 메서드를 사용하여 제출 데이터를 /login 경로로 보냅니다. 이 데이터를 수신하려면 Go 서버에 핸들러를 설정해야 합니다.

서버 측에서는 이 양식을 처리하려면 net/http 패키지를 사용해야 합니다. http.HandleFunc() 함수를 사용하여 양식 제출을 위한 핸들러를 설정할 수 있습니다. 핸들러의 코드는 다음과 같습니다.

func loginHandler(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()

    username := r.Form.Get("username") // 获取表单中的用户名
    password := r.Form.Get("password") // 获取表单中的密码

    // 在这里执行登录逻辑
    // ...

    // 跳转到登录成功后的页面
    http.Redirect(w, r, "/success", http.StatusSeeOther)
}
로그인 후 복사

핸들러는 먼저 r.ParseForm() 메서드를 사용하여 양식 데이터를 구문 분석합니다. 그런 다음 r.Form.Get() 메서드를 호출하여 사용자 이름과 비밀번호를 얻습니다. 다음으로 핸들러에서 로그인 유효성 검사 논리를 수행하고 필요한 경우 다른 페이지로 이동할 수 있습니다.

점프 처리

위 핸들러에서는 http.Redirect() 메서드를 사용하여 다른 페이지로 이동합니다. 이 메소드는 http.ResponseWriter 객체, *http.Request 객체 및 대상 URL이라는 3가지 매개변수를 받습니다. http.StatusSeeOther 매개변수는 점프에 303 상태 코드를 사용하도록 지시합니다.

양식이 제출되면 서버는 브라우저에 HTTP 응답을 보냅니다. 응답에서 우리는 브라우저가 다른 페이지로 이동하도록 지시하기 위해 HTTP 헤더를 설정할 수 있습니다. 이는 "Location" HTTP 헤더를 설정하여 수행할 수 있습니다. Go에서는 ResponseWriter 객체를 사용하여 HTTP 헤더를 설정할 수 있습니다.

위 핸들러에서는 http.Redirect() 메소드에서 대상 URL을 "/success"로 설정했습니다. 로그인에 성공하면 이 URL로 이동합니다. 이 URL을 처리하려면 서버 핸들러에 새 핸들러를 설정해야 합니다.

다음은 핸들러의 코드입니다:

func successHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "恭喜,登录成功!")
}
로그인 후 복사

핸들러는 페이지에 성공적인 로그인 메시지를 출력합니다. 실제 애플리케이션에서는 데이터베이스에 데이터를 추가하거나 데이터를 업데이트하는 등 다른 작업을 수행해야 할 수도 있습니다.

라우팅을 위해 gorilla/mux 사용

HTTP 표준 라이브러리를 사용하여 양식 제출을 구현할 수 있지만 라우팅 기능은 매우 제한적입니다. 따라서 우리는 일반적으로 타사 소프트웨어 패키지를 사용하여 라우팅을 관리합니다. 이 예에서는 gorilla/mux를 사용합니다.

gorilla/mux는 유연한 HTTP 라우팅을 생성하는 데 사용할 수 있는 매우 인기 있는 타사 소프트웨어 패키지입니다. gorilla/mux를 사용하면 여러 핸들러를 서로 다른 경로에 매핑할 수 있습니다. 이렇게 하면 코드를 더 쉽게 읽고 유지 관리할 수 있습니다.

다음은 gorilla/mux를 사용하는 전체 코드입니다.

package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func loginHandler(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()

    username := r.Form.Get("username")
    password := r.Form.Get("password")

    // 执行登录逻辑
    // ...

    // 跳转到成功页面
    http.Redirect(w, r, "/success", http.StatusSeeOther)
}

func successHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "恭喜,登录成功!")
}

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

    r.HandleFunc("/login", loginHandler).Methods("POST")
    r.HandleFunc("/success", successHandler)

    http.ListenAndServe(":8000", r)
}
로그인 후 복사

이 예에서는 gorilla/mux 패키지를 사용하여 새 라우터를 만듭니다. 그런 다음 라우터에 두 개의 핸들러를 추가합니다. 하나는 양식 제출을 처리하고 다른 하나는 성공 페이지를 처리합니다. 우리는 핸들러를 설정하고 HTTP 메소드를 지정하기 위해 router.HandleFunc() 메소드를 사용합니다. 또한 router.PathPrefix() 메소드를 사용하여 핸들러의 URL 접두어를 설정할 수도 있습니다.

코드의 마지막 줄은 http.ListenAndServe() 함수를 호출하여 서버를 시작합니다. 이 함수는 서버 주소와 라우터 개체라는 두 가지 매개변수를 받습니다.

요약

이 기사에서는 Go에서 양식 제출을 구현하고 성공적인 제출 후 점프를 처리하는 방법을 배웠습니다. 또한 gorilla/mux 패키지를 사용하여 HTTP 라우팅을 관리할 때의 이점에 대해서도 배웠습니다. 이러한 기술을 사용하여 우리는 아름답고 기능이 풍부한 웹 애플리케이션을 만들 수 있습니다.

위 내용은 golang 양식 제출 점프의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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