问题标签 [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.

0 投票
0 回答
377 浏览

api - 将参数传递给 go-chi 中的 URL 时出现 404 错误,即使参数已定义

我想从我的前端获取限制和偏移值。为此,我编写了以下路由路径

我正在以下列方式处理请求。我正在解析限制和偏移的值

使用邮递员,我通过以下方式发送请求http://localhost:8000/stock?limit=5&offset=0。谁能帮我理解我做错了什么?

0 投票
0 回答
897 浏览

go - 在主包外部定义处理程序时 chi.URLParam 不起作用

所以我是新手,我目前正在尝试使用 chi 构建一个小的 REST-API(我喜欢它)。昨天我遇到一个问题,我不太明白。

在我的小测试项目中,我有一个main.go文件,其中包含路由器实例化的主要功能,添加中间件并启动服务器:

首先问题不存在,因为我在main.go文件中定义了所有处理函数,并且 GetUser 函数按预期工作并从我的“数据库”(具有 3 个用户的数组)返回了一个用户:

一旦我将此函数从main.go文件中移出到另一个名为userschi.URLParam 的包中,函数就会返回一个空字符串,并且再也找不到 URLParam。我读到它与上下文有关,但我无法理解如果我想使用 chi 函数,我必须将函数放在主文件中。

我错过了什么吗?

更新

根据要求,我删除了除 GetUser 函数之外的所有内容。我的 main.go 文件目前如下所示:

我的用户包如下所示:

当我使用用户包中的函数时,它不起作用并且仍然是一个空字符串,如果我使用 main.go 文件中的函数它可以工作。

更新

所以显然我很愚蠢地两次导入相同的包。在我的主文件中,我使用了“github.com/go-chi/chi/v5”,在我的用户包中,我使用了“github.com/go-chi/chi”。使用同样解决了这个问题,非常感谢

0 投票
0 回答
40 浏览

go - 当我使用 chi 路由器或任何路由器而不是 http 时,404 而不是 graphql 游乐场

每当我用路由器更改http时,当我使用路由器而不是http时,我无法访问我的graphql游乐场,我得到404

本地主机:8080

0 投票
1 回答
117 浏览

go - http中间件中的Go和指针

我正在尝试在我的网络服务器上记录一些数据,所以我创建了一个loggingMiddleware为下一个请求提供服务然后记录数据,我认为这样我将在r *http.Request指针中包含所有必要的数据

但是,对于 RequestID,仅当RequestID中间件在 loggingMiddleware 之前安装时才适用

非工作

在职的

这是预期的行为吗?指针是否应该r *http.Request指向请求的“更新”版本?有没有办法解决这个问题?因为如果我想,例如,从 JWT 令牌中提取用户名并将其放入r.Context()以便稍后记录它,这将需要在loggingMiddleware.

对不起我的英语,如果有不清楚的地方,请询问。

谢谢

0 投票
0 回答
170 浏览

go - Socket.io 服务器未使用 graarh/golang-socketio 实现从客户端接收消息

我的服务器可以正常接收来自前端的连接,但发送消息似乎不起作用。我的语法有问题吗?

前端:

后端:

0 投票
3 回答
177 浏览

go - 从 go-chi 路由处理程序访问数据库实例

我正在尝试使用 go-chi 和 Gorm 构建一个 REST API。

我不确定我应该如何将 Gorm 数据库实例传递给路由处理程序。

或者,如果我应该为每个处理程序创建一个实例,这对我来说听起来不合适。

我应该使用中间件、依赖注入还是其他?这里推荐什么模式?

0 投票
0 回答
116 浏览

go - Gorm 和 go-chi REST 补丁资源

我正在使用chigorm构建一个 REST API

我想要一个补丁路由,我只能更新我在请求正文中收到的属性。

我不确定如何将属性传递给gorm update method的最佳方式。

这样做的好方法是什么?

这是处理程序方法。

它使用这个中间件来预加载请求:

0 投票
1 回答
877 浏览

go - Go chi 中间件将项目添加到响应标头

我的概念很简单,我想添加请求 ID(由 chi 生成middleware.RequestID到响应头)。

我下面的代码添加X-Request-Id但不添加 ID 本身。我不确定为什么,因为它在上下文中肯定是可用的,因为middleware.RequestID在中间件链中更高?

我的路由器创建:

我的自定义中间件:

我的索引路线:

0 投票
1 回答
52 浏览

go - 是否可以通过查询区分同一路径上的路线?

我想先定义方法/,然后再定义/?。所以我做了

但是当我击球时,http://myurl/?id=xyz我从不去GetById方法。如何在 Go Chi 中更好地区分它们?

0 投票
1 回答
75 浏览

rest - 相同端点但具有不同 API 版本的清洁方式

我正在寻找一种干净的方法来维护具有相同端点的 API 的两个版本。

现在,最简单但似乎过度的方法是拥有类似的东西

但是当你有几十个左右的端点时......可能会变得混乱

我想要它的方式是有一个中间件,它将通过下一个定义的路线。所以像

这甚至可能吗?或者有人可以建议一条更好的路线(双关语不是故意的)

编辑:我知道为路径添加前缀是一个可行的选择。我想避免这种情况