问题标签 [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.
go - 如何让 CORS 与 golang chi 服务器一起工作?
我正在尝试获取针对 golang chi 服务器(https://github.com/go-chi/chi)的跨源请求。浏览器发出的预检请求未获得预期的标头(下面的屏幕截图)。这是一个设置简单的 go 服务器和 express 服务器的脚本
在一个目录中运行上述脚本,然后从另一个选项卡执行“npm start”,然后执行“./test-server”。在 Chrome 中导航到“ http://localhost:3000/ ”。打开 Chrome 开发者工具查看错误
go - Go chi 渲染器难以处理绑定列表
到这里。试图让 chi 渲染器返回一个Order
结构实例列表并得到一个我不明白的编译器错误:
当我去编译这段代码时,我得到:
因此,即使我定义了Bind
for Order
,它似乎也不会自动将其Bind
应用于Orders
.
谁能看到我错过了什么?一些端点只会返回一个Order
,而其他端点(比如这个)需要能够返回一个集合/列表Orders
。
json - Golang Chi 路由器不呈现响应负载 JSON
转到此处,使用 Chi 渲染器获取基本的 REST 服务。我有以下结构和功能:
当我运行它并点击调用该GetOrderByIdHandler()
函数的端点时,我得到了 200 OK/Success。然而,响应正文中没有 JSON,而我本来期望一个表示“订单”的编组 JSON 有效负载,例如:
但是,我的 curl 在响应正文中没有显示任何内容:
知道我要去哪里出错吗?我确实看到日志语句在调用绑定之前打印出订单状态,所以我知道它不是空/空order
实例。
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有这样的东西吗?还是我必须用“完整”路径定义一个路由,比如
谢谢
go - 使用 gqlgen 为 GraphQL 添加带有 go-chi 路由器的身份验证中间件
按此使用 handler.NewDefaultServer(...) 使用 go-chi 路由器时无法连接到 graphql Playground
postgresql - 如何使用 Go 在 Postgres 中保存远程 IP 地址?
我正在尝试将传入请求的远程 IP 地址保存到 Postgres 中。我正在使用chi
和sqlc
。
这是迁移:
这是插入查询:
这是参数的结构:
获取 IP 并解析它:
当我提出POST
请求时,它返回:
如果我删除了该代码块而不保存 ip:
我尝试修剪ip
withstrings.TrimSpace(ip)
但没有帮助。
带sqlc
保存的代码。
CreateIp
代码和Ip
结构:
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()
:
我非常感谢任何帮助的尝试,我也为这个糟糕的问题道歉,我有点急于完成这个。
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
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
我似乎无法找到使其工作的方法或能够用中间件包装单个路由。