问题标签 [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 投票
1 回答
3251 浏览

go - 如何让 CORS 与 golang chi 服务器一起工作?

我正在尝试获取针对 golang chi 服务器(https://github.com/go-chi/chi)的跨源请求。浏览器发出的预检请求未获得预期的标头(下面的屏幕截图)。这是一个设置简单的 go 服务器和 express 服务器的脚本

在一个目录中运行上述脚本,然后从另一个选项卡执行“npm start”,然后执行“./test-server”。在 Chrome 中导航到“ http://localhost:3000/ ”。打开 Chrome 开发者工具查看错误

看屏幕截图

0 投票
1 回答
383 浏览

go - Go chi 渲染器难以处理绑定列表

到这里。试图让 chi 渲染器返回一个Order结构实例列表并得到一个我不明白的编译器错误:

当我去编译这段代码时,我得到:

因此,即使我定义了Bindfor Order,它似乎也不会自动将其Bind应用于Orders.

谁能看到我错过了什么?一些端点只会返回一个Order,而其他端点(比如这个)需要能够返回一个集合/列表Orders

0 投票
1 回答
3172 浏览

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

转到此处,使用 Chi 渲染器获取基本的 REST 服务。我有以下结构和功能:

当我运行它并点击调用该GetOrderByIdHandler()函数的端点时,我得到了 200 OK/Success。然而,响应正文中没有 JSON,而我本来期望一个表示“订单”的编组 JSON 有效负载,例如:

但是,我的 curl 在响应正文中没有显示任何内容:

知道我要去哪里出错吗?我确实看到日志语句在调用绑定之前打印出订单状态,所以我知道它不是空/空order实例。

0 投票
1 回答
310 浏览

go - 有没有办法在多个处理程序中使用相同的 request.Body 而无需手动编写大量代码,或者我需要改变我这样做的方式?

这篇精彩的文章在这里:https : //www.alexedwards.net/blog/how-to-properly-parse-a-json-request-body 很好地解释了如何编写 Golang 处理程序。

我需要使用两个处理程序,一个接一个,只有当第一个出现错误时。

像这样:

  1. 是否有不同的方法而不是阅读两次或多次相同的内容request.Body

  2. 有没有办法避免在文章中编写所有代码(需要维护)并使用做得更好并且被成千上万比我聪明的眼睛修改的开源库?

  3. EG:我可以使用一种go-chi方法吗?

0 投票
1 回答
580 浏览

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

在 Spring Boot 应用程序中,可以使用 property 为所有 API 资源设置基本路径server.servlet.context-path。所以实际的端点路径将是server.servlet.context-path + endpoint path.

例如,如果server.servlet.context-path设置为“/api/v1”,并且资源映射到“articles”,则该资源的完整路径为“/api/v1/articles”。

go-chi有这样的东西吗?还是我必须用“完整”路径定义一个路由,比如

谢谢

0 投票
1 回答
1299 浏览

go - 使用 gqlgen 为 GraphQL 添加带有 go-chi 路由器的身份验证中间件

按此使用 handler.NewDefaultServer(...) 使用 go-chi 路由器时无法连接到 graphql Playground

参考 https://gqlgen.com/recipes/authentication/

0 投票
0 回答
283 浏览

postgresql - 如何使用 Go 在 Postgres 中保存远程 IP 地址?

我正在尝试将传入请求的远程 IP 地址保存到 Postgres 中。我正在使用chisqlc

这是迁移:

这是插入查询:

这是参数的结构:

获取 IP 并解析它:

当我提出POST请求时,它返回:

如果我删除了该代码块而不保存 ip:

我尝试修剪ipwithstrings.TrimSpace(ip)但没有帮助。

sqlc保存的代码。

CreateIp代码和Ip结构:

0 投票
2 回答
947 浏览

rest - 无法在 Golang 中读取 cookie(路由器:chi)

我正在为 todolist 应用程序开发 REST API(不是来自教程),并且我已经成功实现了身份验证,但是我的一个辅助函数似乎无法读取明显存在的 cookie,这里是函数:

这是设置cookie的代码的相关部分:

validateAccessToken()是使用的地方和失败的地方(uuid 是“github.com/google/uuid”包):

此外,每当我在邮递员中使用登录路由后进行检查时,所有 cookie 都会发送到 cookie jar 中(并且没有“access_token”cookie 未过期),并且具有正确的外观值。我很困惑为什么该validateAccessToken()函数找不到那里的cookie,这里也是serve()调用的函数main()

我非常感谢任何帮助的尝试,我也为这个糟糕的问题道歉,我有点急于完成这个。

0 投票
1 回答
654 浏览

http - 找不到 Chi GoLang http.FileServer 返回 404 页面

我有这个非常简单的代码来提供一些文件:

但这会引发 404 错误。

这个目录是相对于我的 cmd/main.go 的,我也尝试过它相对于当前包,我也尝试过 os.Getwd(),但它不起作用。请注意,我将“不工作”称为“不给出任何错误并返回 404 代码”。

我希望,当访问 http://localhost:port/static/afile.png 时,服务器将返回此文件,并带有预期的 mime 类型。

这是我的项目结构:

请注意,我也尝试使用 filepath.Join()

我还尝试了其他替代方案,但它们也给出了 404 错误。

编辑:这是 static.go 的 os.Getwd() 输出:

/mnt/Files/Projects/backend/cmd(如预期的那样)

这是 fmt.Println(filepath.Join(wd, "../", "static")) 结果 /mnt/Files/Projects/backend/static

最小复制库: https ://github.com/dragonDScript/repro

0 投票
1 回答
1444 浏览

http - 使用带有 Go-chi 参数的中间件包装处理程序

我一直在尝试用 go-chi 实现教程,尤其是关于包装/将参数传递给包装器的部分。

我的目标是能够用带有自定义参数的中间件包装一些特定的路由,而不是让中间件对我的所有路由都是“全局的”,但我在做这件事时遇到了问题。

我越来越cannot use sayHello (type func(http.ResponseWriter, *http.Request)) as type http.Handler in argument to MustParams: func(http.ResponseWriter, *http.Request) does not implement http.Handler (missing ServeHTTP method)

如果我尝试输入断言它正在做r.Get("/user", MustParams(http.HandleFunc(sayHello), "key", "auth"))

我得到了错误cannot use MustParams(http.HandleFunc(sayHello), "key", "auth") (type http.Handler) as type http.HandlerFunc in argument to r.Get: need type assertion

我似乎无法找到使其工作的方法或能够用中间件包装单个路由。