go - 如何设置Go-chi的上下文路径?

标签 go go-chi

在Spring Boot应用程序中,可以使用server.servlet.context-path属性为所有API资源设置基本路径。因此,实际的端点路径将为server.servlet.context-path + endpoint path
例如,如果server.servlet.context-path设置为“/api/v1”,并且资源映射到“文章”,则该资源的完整路径为“/api/v1/articles”。
Go-chi有这样的东西吗?还是我必须定义一条具有“完整”路径的路线,例如

r.Route("/api/v1/articles", func(r chi.Router) {...
谢谢

最佳答案

这只是一个粗略的例子,有望为您指明方向。如您所见,.Mount()接受一个模式,然后接受.Router。尝试两者,并弄清楚如何构造它。

package main 

import (
    "github.com/go-chi/chi"
    "net/http"
)

func main() {
    r := chi.NewRouter()
    
    r.Mount("/api", Versions())

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

func Versions() chi.Router {
    r := chi.NewRouter()
    r.Mount("/v1", V1())
 // r.Mount("/v2", V2())
    return r    
}

func V1() chi.Router {
    r := chi.NewRouter()
    r.Mount("/user", User())
//  r.Mount("/posts", Post())
    return r
}

func User() chi.Router {
    r := chi.NewRouter()
    r.Route("/hello", func(r chi.Router){
        r.Get("/", hello)
    })
    return r
}

func hello(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello"))
}
访问localhost:8080/api/v1/user/hello应该会导致“您好”响应。

关于go - 如何设置Go-chi的上下文路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63465062/

相关文章:

xml - 解码 xml 中任何级别的匹配节点

postgresql - 不支持的数据类型 : &[] error on GORM field where custom Valuer returns nil?

json - Golang Chi 路由器不呈现响应负载 JSON

go - 有没有一种方法可以在多个处理程序中使用相同的request.Body,而无需手动编写大量代码,或者我需要更改执行此操作的方式?

postgresql - 使用 PostgreSQL 和 json-api 的发布请求返回一个空体

go - 如何使用 Go Chi 提供静态文件?

戈朗 : How can i access json decoded field?

go - 不太懂 goroutines 和 channels,请分解这段代码

http - 如何避免一些网站拒绝 HTTP get 使用 go

go - 无法在 Go Chi 路由器中读取 "request.Body"