问题标签 [gorilla]

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 回答
1576 浏览

go - Golang Gorilla mux,匹配两个 url 签名的最佳方式

使用 gorilla mux,我目前有许多以下形式的 URL:

domain.com/org/{subdomain}/{name}/pagename

这样代码看起来像:

我还想匹配:

subdomain.domain.com/{name}/pagename

我知道我可以做类似的事情

在子域上匹配。是否可能只有一个 HandleFunc() 可以匹配两种类型的 URL,或者我是否需要两个 HandleFunc(),一个用于第一种情况,一个用于 subdomain.domain.com 情况?

0 投票
1 回答
1869 浏览

go - 使用 Gorilla 工具包未找到提供静态内容和处理 404

我最近询问了有关使用 Gorilla mux 提供静态内容和处理 404 的问题;当使用 Handle 而不是 PathPrefix 时,应用程序可以服务于根页面(http://localhost:8888):

然而,根页面中的页面请求(例如http://localhost:8888/demo/page1.html)会被 404 处理程序拦截。在捕获对不存在的页面或服务的请求时,有什么方法可以防止这种情况发生?这是目录结构:

上一个问题:

我正在使用 Gorilla mux 工具包来处理 Web 服务器应用程序中的 http 请求:

我想为无效的 URL 添加一个处理程序,但它永远不会被调用:

如果我删除静态处理程序,则会调用未找到的处理程序。但是,应用程序需要从非绝对路径提供静态内容。有没有办法将它与 404 处理结合起来?

0 投票
1 回答
319 浏览

angularjs - AngularJS页面不从服务器刷新

我有一个 AngularJS 应用程序。服务器端是 Go 并使用 Gorilla Web Toolkit 多路复用器和会话包。Angular 应用程序在主页上有两个表单,登录和注册。使用 AngularJS 将数据发布到 Go$http.post作为 JSON 发布到 Go,并且适当的响应作为 JSON 从服务器发回。我想要实现的是,根据用户是否登录,应该在网站的主页上提供两个不同的页面。目前,当我提交登录表单的详细信息并且服务器以适当的响应进行响应时,我重新加载了页面,但 AngularJS 继续显示带有表单的页面而不是新页面。

AngularJS 代码

相关的 Go 代码 下面,SignInHandler 在 POST 上被调用到“/signIn”,IndexHandler 在 Get 上被调用到“/”。

0 投票
1 回答
124 浏览

go - 如何将我的 AppHandler 添加到我的路线中?

我正在尝试按照 Go 博客:错误处理和 Go 中的appHandler描述实现一个。我有,现在我只是想把它连接到我的路线上。以下作品:appHandler

但是,我希望能够允许 GET 请求以及“StrictSlash(true)”。我有:

AppHandler 看起来像:

我收到一个错误:

0 投票
1 回答
786 浏览

go - 内格罗尼和大猩猩上下文 ClearHandler

是否可以将Gorilla context.ClearHandler()用作 Negroni 的中间件,就像我看到它用作 Alice 的中间件一样?就像是:

目前我context.Clear(r)在每次回复后都会打电话,但我希望自动进行整理。我目前收到以下错误:

但我不确定错误消息告诉我什么。

0 投票
4 回答
10620 浏览

go - Can't use go tool pprof with an existing server

I have an existing http server which I would like to profile. I have included _ "net/http/pprof"to my imports, and I already have http server running:

When I'm trying to access http://localhost:8080/debug/pprof/ I get 404 page not found.

That's what I get when using go tool pprof on a local machine:

Same for a remote client:

0 投票
1 回答
900 浏览

go - 使用 httputil.ReverseProxy 时 mux.Vars 为空

我正在尝试同时使用 gorilla mux 和 httputil.ReverseProxy,但是在尝试获取 mux.Vars 时它是空的。根据https://golang.org/src/net/http/httputil/reverseproxy.go?s=2744:2819#L93似乎 http.Request 指针是原始请求的浅拷贝,应该仍然有效.

有任何想法吗?

https://play.golang.org/p/JpjNvEMIFB

0 投票
3 回答
4305 浏览

concurrency - 正确使用 go context.Context

我刚刚阅读了这篇文章:在 Go 中构建您自己的 Web 框架并在处理程序之间共享值,我选择了context.Context并以以下方式使用它在处理程序和中间件之间共享值:

一切正常,处理程序的加载速度比使用 gorilla/context 更快所以我的问题是:

  1. 这种方法安全吗?
  2. 真的有必要按照我的方式推迟 c.cancel() 函数吗?
  3. 我可以使用 struct 之类的控制器与模型共享值来使用它来实现自定义 Web 框架吗?
0 投票
1 回答
353 浏览

templates - Go Templates - 从对象存储/数据库加载

我正在重建一个支持从 node.js 到 Go 的客户特定模板(主题)的应用程序。

我目前正在使用渲染来渲染我的模板文件,但我实际上需要做的是访问存储在对象存储(如 Cloudfiles)中的模板。

在 node.js 中,我使用 express 完成了此操作,并且我正在覆盖该render()方法,但我无法弄清楚如何在 Go 中执行此操作。

我基本上需要做这样的事情:

如果需要,我可以通过执行以下操作来动态包含子模板:http ://play.golang.org/p/7BCPHdKRi2但老实说,这似乎不是一个好方法。

我一直在寻找解决方案,但一直遇到障碍。任何建议/帮助都会很棒。

编辑:

本质上,我在问以下问题:

  1. 如何按请求从数据存储中加载特定模板。
  2. 然后我如何将其作为响应发送给客户
0 投票
1 回答
7904 浏览

go - 将上下文传递给 gorilla mux - go idioms

我对 golang 相当陌生,并且正在尝试找出以惯用方式执行此操作的最佳方法。

我有一组静态定义并传递给的路由gorilla/mux。我用一些东西来包装每个处理函数来计时请求和处理恐慌(主要是为了让我能理解包装是如何工作的)。

我希望他们每个人都能够访问一个“上下文”——一个每个 http-server 一个的结构,它可能有数据库句柄、配置等。我不想做的是使用静态全局变量。

我目前这样做的方式可以让包装器访问上下文结构,但我看不到如何将它放入实际的处理程序中,因为它希望它是一个http.HandlerFunc. 我想我能做的就是转换http.HandlerFunc成我自己的类型,它是一个接收器Context(并且对包装器也做类似的事情,但是(经过多次尝试)我无法Handler()接受这一点。

我不禁认为我在这里遗漏了一些明显的东西。代码如下。

这是一种方法,但它看起来很可怕。我不禁认为必须有一些更好的方法来做到这一点 - 也许是子类 (?) http.Handler