问题标签 [go-http]

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

go - Golang fasthttp 路由器自定义记录器

我正在玩 fasthttp 和它的路由器,我对基本的东西没有任何问题,我有一个工作服务器和一个路由器,这是很容易的部分。

问题出在记录器上,我希望能够自定义该记录器,但是 ctx.Logger() 似乎不可能,因为它只需要一个 Printf 参数,而且格式不是我想要的。

有谁知道我可以在文档中的哪里找到我想做的工作示例?

我目前拥有的代码示例:

因为我仍在尝试使用 Web 服务器,但我仍然不了解它的一些内容,Go 也一样。所以欢迎举个例子。

例如,我希望能够使用主包中的记录器定义来做类似的事情:

0 投票
1 回答
355 浏览

go - 多余的 WriteHeader 没有响应

我正在编写一个向 WebSocket 网关发送请求的 HTTP API。我正在使用go1.14.7gorilla/mux v1.8.0。代码将使用GOOS=linux GOARCH=arm GOARM=7.

我的问题如下:

  • respondBadRequest()即使我从不使用,也总是记录WriteHeader
    • http: superfluous response.WriteHeader call from main.(*HttpHandler).respondBadRequest
  • API响应总是200 OK即使respondBadRequest()被调用
  • API 响应总是有一个空的正文

我对 Go 完全陌生。下面是我的代码结构。

0 投票
0 回答
31 浏览

go - 使用 http.FileServer 按需生成文件

我正在使用net/http构建缩略图库服务器作为学习练习。http.FileServer适用于提供原始版本的图像。

现在我正在探索使用类似技术提供缩略图的可能性。

我想要的是:为 url 前缀挂钩一个 FileServer,例如/thumbs/. FileServer 应该从存储缩略图的目录提供服务,可能在/tmp.

当缩略图文件不存在时,它不应该返回 404,而是调用我的缩略图生成代码。

我想尽可能多地重用 FileServer 代码,所以我正在考虑编写一个自定义http.FS实现来实现这一点。还有这个答案可能与我需要的相差不远:How to custom handle a file not being found when using go static file server?

哪个是更好的方法?

0 投票
0 回答
56 浏览

go - Golang 通过一个客户端的两个 HTTP 请求

如何在 Go 上通过一个客户端准备两个 HTTP 请求而不会出现内存问题?

我有下一个代码:

两个请求都有效,如果单独使用没有错误。但是,如果尝试同时使用它们(从一个获取 ID,然后在另一个上处理此数据请求),我会遇到内存错误

请提供有关使用一个 httpClient 处理两个请求的正确性的想法?谢谢

0 投票
2 回答
122 浏览

go - 如何包装一个只做一些修改的 Go 包?

如何编写一个包装库的 Go 包,以便调用被覆盖的函数使用我的实现,而非覆盖函数“落入”我正在包装的库?

特别是:我希望我的 Go 包 wrap net/http,除了我最初只想替换http.FileServerand http.NotFoundHandler,并让所有其他功能保持不变。我的库是现有代码的替代品,它调用了net/http我不会覆盖的其他函数。例如,我希望能够做到:


我试过的

我可以手动覆盖包装库导出的每个函数(如下所示),但如果可能的话,我宁愿避免这种情况。这种方法是不可取的,因为它不考虑从我包装的库中调用我覆盖的函数的实例。

我也可以完全分叉net/http并直接更改它,但我希望清楚我正在做哪些更改,而无需与原始版本进行比较。维护标准库的一部分以仅覆盖几个函数也是没有意义的。


理由

我不是在寻找关于这是否是一个“好”想法的评论。我只是想知道该怎么做。

这个库的计划是简单地改变 404 页面和目录列表索引页面的外观。这种纯粹的美学变化不会影响net/http. 如果它的结构不是包装所有的net/http,那么用户将不得不在使用两个包之间切换来做同样的事情。那么我的库不能被认为是已经使用net/http.

随着时间的推移,我还打算覆盖更多函数,但我的库的 API 将始终net/http. 这样做可以减少每次库更改时手动http.Function替换调用的需要。mylibrary.Function此外,我希望能够在net/http我没有编写的代码(使用)中导入我的替换,并且不想手动重构。

0 投票
1 回答
62 浏览

node.js - Go 深入理解 REST API 中的自定义错误处理

我来自 Node.js 的世界,在那里我从使用Express构建 Web 应用程序中学到了很多东西,我认为,在处理错误和出现意外错误时,有一个很好的方法来处理,有一个很棒的抓住它的方法。

所以,我在 Go 中寻找同样的东西。我不知道我是否已经找到它,但我发现的来自这个链接https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/11.1.html和一些我读过的文章,似乎许多开发人员都在使用相同的方法。

我的担心,而不是真正的担心,是我不理解下面代码的某些部分。

我知道可以在 go 中创建自定义类型,但说真的,我不明白这是什么意思或如何在http.Serve中理解它

我不明白的一件事是

在我阅读的大多数代码中,通常它是一个结构或替换类型(我的意思是type Account int),但在这里,它是一个函数。我想了解它如何帮助处理错误。

在上面的执行ServeHTTP里面,我们有这条线err := fn(w, r)。请问,你能解释一下吗?

在同一篇文章中,我们有这段代码

这条线

拜托,你能帮我理解这个appHandler(viewRecord)吗?究竟是什么?这是一个实例化,是铸造吗?它应该做什么?我的意思是,如何理解似乎很关键的那条线?

最后一个问题,请。是否有可能在处理请求的过程中捕捉到任何地方可能发生的错误?在 Node.js 中,您可以执行类似的操作

类似的东西,在Go中可能吗?

谢谢你。

0 投票
1 回答
617 浏览

http - 将 http 响应流式传输到 http ResponseWriter

我想将 HTTP GET 响应流式传输到 HTTP responsewriter。我在网上搜索了解决方案,最后使用了 io.Copy 。但它不是流式传输,而是下载整个 get 响应,然后传递给 HTTP responsewriter。我被这个问题困扰了2天。如果你知道,请帮助我。下面是示例代码

0 投票
1 回答
105 浏览

go - 如何在 GoLang 中的 http2 传输上设置 MaxConnsPerHost

我试图强制 GoLang 使用 HTTP2,所以做了以下事情:

但我还需要设置 MaxConnsPerHost 和 MaxIdleConns,这是我做不到的。我知道我可以在 HTTP1 中设置它们,如下所示:

我怎样才能为 HTTP2 实现相同的目标?

0 投票
1 回答
41 浏览

go - 如何避免在失败情况下重复返回 InternalServerError?

我正在尝试向我的网络应用程序添加一个用于错误处理的功能,而不是一直这样做

做这样的事情:

我做了这个功能:

但我不知道发生错误时如何破坏处理程序

0 投票
2 回答
248 浏览

go - 如何在 Golang 中将 Secret 提取为配置文件

所以我对 Go 还是很陌生,我很好奇如何动态导入密码和 URL,而不在我的脚本中暴露它们。在 python 中,我能够使用 JSON 有效负载来实现这一点,并且基本上会导入 JSON,加载有效负载,并指定何时需要传递需要保密的规范。

这是我的 Go 脚本:

可以想象,我在加载密码时运气不佳,当我使用直接令牌更改以下内容时,它会在脚本中公开我的密码,并在 Jira 中生成 JSON 有效负载。

因此,如果我在 YAML 中有这样的配置文件:

如何将 YAML 文件加载到我的脚本中?如何加载等效的 JSON?