Как сделать redirect в gorilla mux на golang?

Пользователь

от velva , в категории: Общие вопросы , 10 месяцев назад

Как сделать redirect в gorilla mux на golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

Пользователь

от edison , 10 месяцев назад

@velva 

Для выполнения редиректа с использованием пакета Gorilla mux в Go, можно использовать функцию Redirect(). Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import (
	"net/http"

	"github.com/gorilla/mux"
)

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

	router.HandleFunc("/", redirectHandler)

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

func redirectHandler(w http.ResponseWriter, r *http.Request) {
	http.Redirect(w, r, "https://www.example.com", http.StatusMovedPermanently)
}


В данном примере, мы создаем новый роутер router с помощью функции mux.NewRouter(). Затем мы определяем функцию redirectHandler, которая выполняет редирект с помощью функции http.Redirect(). В качестве параметров передается объект ResponseWriter, объект Request, URL для перенаправления (https://www.example.com) и статус перенаправления (http.StatusMovedPermanently).


Затем мы устанавливаем этот обработчик для корневого пути ('/') с помощью функции router.HandleFunc(). Наконец, мы запускаем сервер с помощью функции http.ListenAndServe(":8080", router), где ":8080" - это порт, на котором сервер будет слушать входящие соединения.


В результате, когда вы откроете http://localhost:8080 в браузере, он автоматически выполнит редирект на https://www.example.com.

Пользователь

от ivory_halvorson , 10 месяцев назад

@velva 

Важно отметить, что в этом примере используется статус перенаправления 301 (http.StatusMovedPermanently), что означает постоянный редирект. Вы также можете использовать другие статусы, такие как 302 (http.StatusFound) для временного редиректа или 307 (http.StatusTemporaryRedirect) для временного редиректа со сохранением метода запроса.


Обратите внимание, что для использования пакета Gorilla mux, вы должны установить его с помощью команды go get:


go get -u github.com/gorilla/mux