问题标签 [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 - Go 包命名
如何正确引用项目包?我有以下文件夹结构:
在main.go
我想从sbp.controllers
. 我似乎找不到正确引用它的方法
main.go
sbp/controller.go
我尝试导入“sbp/controller”,甚至“github.com/jiewmeng/finance/sbp/controller”,但它们似乎是自动删除了我的 VSCode,所以我认为它无效?
json - 在render.Bind中chi空http.Request.Body
我正在使用github.com/pressly/chi构建这个简单的程序,我尝试从以下内容解码一些 JSON http.Request.Body
:
当我不使用render.Bind()
(from "github.com/pressly/chi/render"
) 时,它会按预期工作。
但是,当我取消注释该行err := render.Bind(r, &p)
并注释该行时err := json.NewDecoder(r.Body).Decode(&p)
,它会恐慌EOF
:
2017/06/20 22:26:39 http: panic serving 127.0.0.1:39696: EOF
因此json.Decode()
失败了。
我做错了什么还是在调用http.Request.Body
之前已经在其他地方读过render.Bind()
?
go - 生产环境中的 vue-router(与 Go 一起使用)
我想完全分离客户端和服务器,所以我创建了一个 vuejs 项目vue init webpack my-project
。在这个项目中,我使用 vue-router 进行所有路由(这包括特殊路径,例如/user/SOMEID
..
这是我的 routes.js 文件:
当我使用npm run dev
一切正常运行应用程序时。我现在已准备好部署到云,所以我运行了npm run build
. 因为我需要使用 HTTP 服务器,所以我决定也使用 Go 来做这件事。这是我的 Go 文件:
我可以加载主页 ( App.components.home
) 似乎一切正常(css、图像、翻译、对服务器的调用和响应).. 但是当我尝试打开其他应该导致 404 或加载一个用户,然后我只得到404 page not found
纯文本的响应(不是它应该呈现的 vue notFound 组件)..
任何想法我做错了什么以及如何解决它?
编辑:这是 main.js 文件中路由器设置的另一部分:
go - 如何在 Golang(go-chi) 路由器上同时提供“/something”和“/something/”?
我正在为我的应用程序使用 go-chi 路由器,但如果我将路由设置为“/something”,我无法使用一条路由同时提供“/something”和“/something/”
然后请求“/something/”它给我404 page not found错误。有没有办法用一条路线服务这两种情况?
http - 特定路由上的中间件
如在 中go-chi
,在单个路由级别设置中间件,而不仅仅是为所有路由全局设置
如何Login
指定唯一的中间件或从通用中间件中排除?
google-app-engine - 在运行 go_app 的 appengine 上出现 404
我构建了小型 go 应用程序,我使用以下命令在本地运行它
我之前将它部署到了 Google AppEngine,但上面的方法不起作用,所以我为 Google AppEngine 创建了这个:
我使用以下内容app.yaml
该应用程序部署良好,谷歌云控制台说它正在运行,但我得到的只是“404 页面未找到”,这不是我构建的任何处理程序。AppEngine 没有报错,我在日志中只看到 404,在日志中深入挖掘我发现有些东西提到了 go app: urlMapEntry: "_go_app"
。
我正在使用 go-chi 路由器:
但无论我输入哪个 url,我都看不到它RootHandler
正在被使用,因为它会返回一个 HTML 文件。当我尝试访问 /api 时,我也看不到NotSupportedAPIHandler
它被拾起,因为这将返回带有 JSON 响应的状态 404。
奇怪的是,不久前代码工作了,我得到了 HTML 文件,使用 go_app,使用 go-chi 路由器。现在,我得到的只是找不到 404 页面。
该应用程序在本地运行良好。
我该如何调试呢?有没有什么地方我可以看到出了什么问题,或者如何app.yaml
以一种认为有必要返回 404 的方式路由它。来自我的 go_app 的任何响应看起来都与我现在得到的不同,所以这就是为什么我认为失败更早,在app.yaml
.
rest - 带有查询参数的golang Chi路由器不起作用
我正在使用 chi 在 golang 中提供宁静的服务。我正在尝试创建如下路线
但是我尝试通过邮递员到达此端点,但未找到 404
我可以知道这里的问题吗?
go - 如何在中间件 go-chi 中获取路由
要检查授权,我需要知道授权中间件中的路由。我检查了 go-chi 的文档并这样做了:
这给了我我需要的东西。但现在显然授权通过了,所以如果已经执行了对 routepattern 处理程序的检查(将结果写入客户端)
在检查 RoutePattern() 之前,有没有其他方法可以在没有 next.ServerHTTP(w,r) 的情况下获取中间件内部的路由?
rest - 使用路径变量测试 Chi 路线
我无法测试我的 go-chi 路线,特别是带有路径变量的路线。运行服务器go run main.go
工作正常,并且对带有路径变量的路由的请求按预期运行。
当我为路由运行测试时,我总是收到 HTTP 错误:Unprocessable Entity
. 注销发生的事情后articleID
,似乎articleCtx
无法访问路径变量。不确定这是否意味着我需要articleCtx
在测试中使用,但我已经尝试过ArticleCtx(http.HandlerFunc(GetArticleID))
并得到错误:
panic: interface conversion: interface {} is nil, not *chi.Context [recovered]
panic: interface conversion: interface {} is nil, not *chi.Context
运行服务器:go run main.go
测试服务器:go test .
我的来源:
不知道如何继续这个。有任何想法吗?我想知道是否有net/http/httptest
关于使用context
测试的答案,但什么也没看到。
也是非常新的 go Go(和context
包),因此非常感谢任何代码审查/最佳实践评论:)