问题标签 [goji]

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

https - Golang:使用 Goji 从 Go Web 应用程序同时提供 http 和 https 的正确方法?

这是单个 Go 网络应用程序(使用 Goji)处理 http 和 https 流量的正确方法吗?

或者,让单个 Go Web 应用程序同时监听端口 8000 和 8001 的最佳方法是什么?

0 投票
3 回答
4350 浏览

go - 如何在 Goji (Golang) 中使用不同的中间件创建单独的路由组?

我正在使用 Goji ( https://github.com/zenazn/goji ) 并且想定义具有自己的中间件的路由组。例如,下面的所有路径/company都应该使用 LDAP 身份验证并定义了一个中间件来执行此操作。所有路径/external都使用不同类型的身份验证,因此它们具有不同的中间件定义。但这是在同一个端口上提供的单个应用程序,所以我不想完全创建单独的 Web 服务——只是路径(和一些特定的路由)可能使用不同的中间件。

我在 Goji 中看到的所有示例都为所有路由使用了一组中间件,所以我不确定如何以干净的方式完成此操作。此外,如果我可以为路由组中的所有路由指定基本路径,这将是很好的,类似于我在其他一些路由框架中看到的方式。

我是否缺少 Goji 库(或扩展名为 net/http)中的此功能,该功能允许我将路由组合在一起并让每个组使用自己的中间件堆栈?

我想要实现的是这样的(psedocode):

0 投票
1 回答
165 浏览

timer - 如何从 Web 服务器重启(或代码刷新/升级)中恢复 Go 计时器?

例如,考虑一个 Web 服务,用户可以在其中发出 API 请求以在某个预定时间启动任务。任务定义和计划时间保存在数据库中。我想出的第一种方法是启动一个 Go 计时器并等待计时器在 Goroutine 中到期(不阻塞请求)。这个 goroutine 在时间到期后,还会触发另一个 API 请求以开始执行任务。

现在重新部署此服务时会出现问题。对于零停机时间部署,我将Einhorngoji一起使用。代码重新加载后,显然 timer goroutine 和 timer-expiration-handler goroutine 都会死掉。代码重新加载后有什么方法可以恢复 Go 计时器?

我正在努力解决的另一个问题是允许用户中断计时器(一旦启动)。Go 计时器有Stop来促进这一点。但是由于这是一个无状态的 API,当\interrupt请求进入服务时没有定时器通道的上下文。而且似乎不可能将通道(从NewTimer返回)编组到磁盘/数据库。

我也很可能没有从正确的角度看待问题。任何建议将不胜感激。

0 投票
2 回答
5388 浏览

go - Golang Goji:如何同时提供静态内容和 api

过去两周我一直在玩 Golang,终于可以制作一个真正的应用程序了。它使用 NGINX 提供的静态 HTML 文件,API 使用 Goji Web 框架作为后端。我不使用任何 Golang 模板,因为一切都是 Angular.Js,所以静态适合我的需要。

我想选择是在生产中使用 NGINX,还是让 Go 使用应用程序使用的相同端口(8000)在根目录提供静态内容。这样开发环境就不需要安装 NGINX。

因此,尝试像这样向默认多路复用器添加句柄

}

此句柄在所有 API 路径都已注册后执行(否则 API 将不起作用)。

我已经尝试过任何类型的组合,要么将我重定向到 HTTP 404,要么将 HTML 内容显示为文本。两者都不好。我想知道是否有人来过这里并且可以提醒我我做错了什么。

谢谢。

虽然这与我的问题无关,但这是我正在使用的 NGINX 配置:

}

0 投票
1 回答
1037 浏览

html - Goji - 如何在变量中获取对 GoLang 的 HTML GET 表单请求?

请看一下我的两个文件 main.go 和 index.html。我从 Goji 网络微框架开始。在Goji Web 框架中查找 Snippets。

在我的示例中,我可以在@Localhost8000 看到 HTML 表单网页 index.html,我可以在输入字段中输入例如“test”并按下提交按钮。在终端输出中,我可以看到它是从 127.0.0.1:51580 发送的:"Started GET "/?name=test"

如何在变量中获取对 golang 的 HTML GET 表单请求?我认为它将与 goji.Get 一起使用。我尝试了几种方法,但我让它不运行。如果有人可以给我一个提示或片段,我很高兴。我还在学习golang。

文件 main.go:

文件 index.html:

文件位置:

输出 - 在终端窗口中开始:

stackoverflow 上有一个类似的问题: parse-input-from-html-form-in-golang 这个例子我无法运行。我认为这与你的文件所在的位置以及你的 @localhost 是如何定义的有关。这在这个例子中是缺失的。

0 投票
1 回答
481 浏览

go - 在 Goji 中映射所有路由及其 http 方法

我想映射每条路由及其请求类型(GET、POST、PUT、...),以便为我的 restful API 生成类似于 JSON 格式的 sitemap.xml 的内容。

Goji 使用函数来创建新路线。我可以将路径和处理程序存储在地图中。

我的方法是这样的,除了编译器给出以下初始化循环错误,因为sitemaproutes相互引用(路线图包含应该 marhsall 本身的处理程序站点地图)。

这可以以更惯用的方式实现吗?

0 投票
1 回答
244 浏览

google-app-engine - 使用绑定参数定义了一条 Goji 路线,但得到 404

我有一个使用 Goji 的 Google App Engine 应用程序并定义了以下路线:

我可以 GET 和 POST 到 /api/list 但 GETing /api/list/0 只会导致 404,我认为来自 Goji 本身。

有谁知道我做错了什么?

0 投票
0 回答
113 浏览

go - goji csrf 如何不使用 multipart

我正在学习如何使用 go 开发网站,我决定尝试 Goji。一切正常,除了当我尝试goji-csrf在文件上传时使用CSRF (Forbidden - CSRF token invalidenctype="multipart/form-data"

感谢您提前回答。

0 投票
1 回答
5295 浏览

go - 监听 TCP4 而不是 TCP6

我正在使用https://github.com/gin-gonic/gin编写一个http服务但是当我部署它时,它一直在tcp6上部署(根据netstat)

0 投票
1 回答
88 浏览

go - goji/httpauth - 不能与标准 Golang 'net/http' 库一起使用

编码

返回

我究竟做错了什么?我是 Go 新手,不明白为什么这里的示例不完整且不包含YourHandler函数。