问题标签 [go-chi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
api - 将参数传递给 go-chi 中的 URL 时出现 404 错误,即使参数已定义
我想从我的前端获取限制和偏移值。为此,我编写了以下路由路径
我正在以下列方式处理请求。我正在解析限制和偏移的值
使用邮递员,我通过以下方式发送请求http://localhost:8000/stock?limit=5&offset=0
。谁能帮我理解我做错了什么?
go - 在主包外部定义处理程序时 chi.URLParam 不起作用
所以我是新手,我目前正在尝试使用 chi 构建一个小的 REST-API(我喜欢它)。昨天我遇到一个问题,我不太明白。
在我的小测试项目中,我有一个main.go
文件,其中包含路由器实例化的主要功能,添加中间件并启动服务器:
首先问题不存在,因为我在main.go
文件中定义了所有处理函数,并且 GetUser 函数按预期工作并从我的“数据库”(具有 3 个用户的数组)返回了一个用户:
一旦我将此函数从main.go
文件中移出到另一个名为users
chi.URLParam 的包中,函数就会返回一个空字符串,并且再也找不到 URLParam。我读到它与上下文有关,但我无法理解如果我想使用 chi 函数,我必须将函数放在主文件中。
我错过了什么吗?
更新
根据要求,我删除了除 GetUser 函数之外的所有内容。我的 main.go 文件目前如下所示:
我的用户包如下所示:
当我使用用户包中的函数时,它不起作用并且仍然是一个空字符串,如果我使用 main.go 文件中的函数它可以工作。
更新
所以显然我很愚蠢地两次导入相同的包。在我的主文件中,我使用了“github.com/go-chi/chi/v5”,在我的用户包中,我使用了“github.com/go-chi/chi”。使用同样解决了这个问题,非常感谢
go - http中间件中的Go和指针
我正在尝试在我的网络服务器上记录一些数据,所以我创建了一个loggingMiddleware
为下一个请求提供服务然后记录数据,我认为这样我将在r *http.Request
指针中包含所有必要的数据
但是,对于 RequestID,仅当RequestID
中间件在 loggingMiddleware 之前安装时才适用
非工作
在职的
这是预期的行为吗?指针是否应该r *http.Request
指向请求的“更新”版本?有没有办法解决这个问题?因为如果我想,例如,从 JWT 令牌中提取用户名并将其放入r.Context()
以便稍后记录它,这将需要在loggingMiddleware
.
对不起我的英语,如果有不清楚的地方,请询问。
谢谢
go - Socket.io 服务器未使用 graarh/golang-socketio 实现从客户端接收消息
我的服务器可以正常接收来自前端的连接,但发送消息似乎不起作用。我的语法有问题吗?
前端:
后端:
go - 从 go-chi 路由处理程序访问数据库实例
我正在尝试使用 go-chi 和 Gorm 构建一个 REST API。
我不确定我应该如何将 Gorm 数据库实例传递给路由处理程序。
或者,如果我应该为每个处理程序创建一个实例,这对我来说听起来不合适。
我应该使用中间件、依赖注入还是其他?这里推荐什么模式?
go - Gorm 和 go-chi REST 补丁资源
我正在使用chi和gorm构建一个 REST API
我想要一个补丁路由,我只能更新我在请求正文中收到的属性。
我不确定如何将属性传递给gorm update method的最佳方式。
这样做的好方法是什么?
这是处理程序方法。
它使用这个中间件来预加载请求:
go - Go chi 中间件将项目添加到响应标头
我的概念很简单,我想添加请求 ID(由 chi 生成middleware.RequestID
到响应头)。
我下面的代码添加X-Request-Id
但不添加 ID 本身。我不确定为什么,因为它在上下文中肯定是可用的,因为middleware.RequestID
在中间件链中更高?
我的路由器创建:
我的自定义中间件:
我的索引路线:
go - 是否可以通过查询区分同一路径上的路线?
我想先定义方法/
,然后再定义/?
。所以我做了
但是当我击球时,http://myurl/?id=xyz
我从不去GetById
方法。如何在 Go Chi 中更好地区分它们?
rest - 相同端点但具有不同 API 版本的清洁方式
我正在寻找一种干净的方法来维护具有相同端点的 API 的两个版本。
现在,最简单但似乎过度的方法是拥有类似的东西
但是当你有几十个左右的端点时......可能会变得混乱
我想要它的方式是有一个中间件,它将通过下一个定义的路线。所以像
这甚至可能吗?或者有人可以建议一条更好的路线(双关语不是故意的)
编辑:我知道为路径添加前缀是一个可行的选择。我想避免这种情况