Sahen
@Sahen
ох уж это программирование.....

Как реализовать ЧПУ на Golang?

Как реализовать человекопонятный урл на Golang?
Как отловить урл и разобрать его на части?
Подкиньте пример кода пожалуйста.
  • Вопрос задан
  • 449 просмотров
Пригласить эксперта
Ответы на вопрос 2
На фреймфорке gin, например, это будет выглядеть так:
package main

import (
	"net/http"

	"gopkg.in/gin-gonic/gin.v1"
)

func main() {
	r := gin.Default()
	r.GET("/ping", PingHandler)
	r.GET("/user/:name", UserGetHandler)
	r.POST("/user/:name", UserPostHandler)
	r.Run()
}

func PingHandler(c *gin.Context) {
	c.JSON(200, gin.H{
		"message": "pong",
	})
}

func UserGetHandler(c *gin.Context) {
	name := c.Param("name")
	c.String(http.StatusOK, "Hello %s\n", name)
}

func UserPostHandler(c *gin.Context) {
	name := c.Param("name")
	// Do some actions
	c.String(http.StatusOK, "User %s was edited\n", name)
}


$ curl 127.0.0.1:8080/ping
{"message":"pong"}
$ curl 127.0.0.1:8080/user/john
Hello john
$ curl -XPOST 127.0.0.1:8080/user/john
User john was edited
Ответ написан
Комментировать
@kolo2012
https://github.com/julienschmidt/httprouter
package main

import (
    "fmt"
    "github.com/julienschmidt/httprouter"
    "net/http"
    "log"
)

func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
    fmt.Fprint(w, "Welcome!\n")
}

func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
    fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name"))
}

func main() {
    router := httprouter.New()
    router.GET("/", Index)
    router.GET("/hello/:name", Hello)

    log.Fatal(http.ListenAndServe(":8080", router))
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы