问题标签 [servemux]

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

go - 在一个 go 程序中同时运行两个 Web 服务器

在一个 go 程序中,我想同时运行两个 Web 服务器,
显然它们将在两个不同的端口(以及必要时
的 IP 地址)上提供服务,问题出在调用http.handle,当我尝试为 ' 注册处理程序时/' 对于第二个服务器,它恐慌并说已经有一个与'/'关联的处理程序,
我想我需要创建一个多路复用器,DefaultServeMux我尝试使用它gorillaMux但无法弄清楚,

在同一个程序/进程中运行两个 Web 服务器是否存在根本性错误。

更清楚地说,两个 Web 服务器中的一个用作常规 Web 服务器,我需要第二个用作 RPC 服务器,以便在集群的不同节点上运行的程序实例之间进行通信,

编辑:为了更清楚一点,这不是实际代码,而是要点

0 投票
2 回答
5157 浏览

http - Go:如何组合两个(或多个)http.ServeMux?

假设您有两个 的实例http.ServeMux,并且您希望它们在相同的端口号上提供服务,如下所示:

combinedMux如上所述,如何编写函数?

...或者是否有另一种方法来完成同样的事情?

0 投票
1 回答
14142 浏览

unit-testing - 在 Golang 中测试 HTTP 路由

我正在使用 Gorilla mux 和 net/http 包创建一些路由,如下所示

我正在尝试编写一个测试来测试这些路线。例如,我正在尝试GET专门测试路线以获取400返回,因此我有以下测试代码。

但是,当我运行这个测试时,我得到一个404可以想象的,因为请求没有被正确路由。?

当我从浏览器测试这个 GET 路由时,它确实返回 a400所以我确定测试的设置方式存在问题。

0 投票
1 回答
1312 浏览

http - Golang negroni 和 http.NewServeMux() 问题

我正在运行具有以下代码的服务器:

它工作得很好。

bodmas.sum但是当我用另一个包裹时,http handler我总是得到“找不到文件”。流不去这条路线。

wrapper.RateLimit定义如下。这在单独测试时按预期工作:

没有错误。关于这种行为的任何建议?如何使它工作?

0 投票
2 回答
4639 浏览

go - 用于子路径路由的 Gorilla Mux

我有以下路线:

随着我的路线越来越多,管理起来变得越来越困难。

我想做类似的事情:

所有处理程序在另一个包中分开

有什么方法可以在单独的包中匹配这些路径?

谢谢,

0 投票
1 回答
433 浏览

go - Gorilla Mux 处理 curl 请求

我想使用 Gorilla mux 来处理 api 请求。

命令将类似于:

卷曲http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello

我正在与以下处理程序一起服务:

但是对于curl请求,我只得到numbernottargetmessage's的形式值

使用 Gorilla mux 处理 api 请求的正确方法是什么?我需要子路由吗?

我只想接收任何形式的http请求http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello并能够将其键映射到值

谢谢!

0 投票
1 回答
112 浏览

http - 如何将 ServeMux 与 ServerConn 一起使用?

我正在创建一个网络 API,并希望人们能够使用ServeMux将请求路由到特定端点。我需要使用我自己的低级ServerConn ,而不是使用Server实例。这是因为我从同一个端口接收传入的 HTTP 请求和纯文本数据。

然而,问题是,如果我想使用我的 ServeMux 转发请求,我会使用它的ServeHTTP方法。为此,我需要提供一个 ResponseWriter,我不知道如何创建它的实例,因为它是一个接口,而不是一个结构。我应该创建自己的 ResponseWriter 结构吗?Golang 标准库是否提供了一个?还是完全有替代解决方案?

0 投票
2 回答
349 浏览

angularjs - 如果 URL 与 Go 中的任何模式都不匹配,如何提供文件?

我正在使用 Angular 2 和 Go 构建单页应用程序,在 Angular 中我使用路由。如果我打开网站,比如说,http://example.com/Go 将为我提供我的index.html文件,这很好,因为我写了这个:

现在我在 Angular 中有一条路由,/posts比如说对于这条路。useAsDefaulttruehttp://example.com/posts

我不认为在 Go 中为每条 Angular 路由创建一个处理程序是一个好主意,因为可能有很多路由。index.html所以我的问题是,如果请求 URL 与我在我的设置中设置的任何其他模式不匹配,我如何在 Go 中提供服务ServeMux

0 投票
2 回答
8517 浏览

http - 什么是 http 请求多路复用器?

我一直在研究 golang,我注意到很多人使用该http.NewServeMux()功能创建服务器,但我并不真正了解它的作用。

我读到这个:

在 go ServeMux 中是一个 HTTP 请求多路复用器。它将每个传入请求的 URL 与已注册模式列表进行匹配,并为与 URL 最匹配的模式调用处理程序。

这与仅执行以下操作有何不同:

使用多路复用的目的是什么?

0 投票
8 回答
49924 浏览

go - 使 golang Gorilla CORS 处理程序工作

我在这里有相当简单的设置,如下面的代码中所述。但我无法开始CORS工作。我不断收到此错误:

XMLHttpRequest 无法加载http://localhost:3000/signup。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://localhost:8000 ”。响应具有 HTTP 状态代码 403。

我确定我在这里遗漏了一些简单的东西。

这是我的代码: