了解Web API的goroutines

时间:2015-05-06 16:06:57

标签: go

刚开始使用Go并希望创建一个简单的Web API。我正在研究使用Gorilla mux(http://www.gorillatoolkit.org/pkg/mux)来处理Web请求。

我不确定如何最好地使用Go的并发选项来处理请求。我是否在某处读到main函数实际上是goroutine,还是应该在收到goroutine时将每个请求发送给goroutine?如果我“离开”,请道歉。

2 个答案:

答案 0 :(得分:7)

假设您正在使用Go的http.ListenAndServe来处理您的http请求,文档会明确指出每个传入的连接都由一个单独的goroutine处理。 http://golang.org/pkg/net/http/#Server.Serve 您通常会从ListenAndServe函数中调用main

Gorilla mux只是一个包,可以比http.DefaultServeMux更灵活地将请求路由到处理程序。它实际上并没有处理传入的连接或请求只是简单地将它传递给你的处理程序。

我强烈建议您阅读一些文档,特别是关于编写Web应用程序的本指南https://golang.org/doc/articles/wiki/#tmp_3

答案 1 :(得分:1)

我提供了答案,即使我因为过于宽泛而投票结束了。

无论如何,这些都不是必需的。你在想它。如果你还没有读过这篇文章,那看起来就像一个体面的教程; http://thenewstack.io/make-a-restful-json-api-go/

您可以像在大多数典型的休息框架中一样设置路由,并让Web服务器/框架在请求处理级别担心并发性。您只需使用goroutine来生成请求的响应,例如,如果您需要聚合来自文件夹中的10个文件的数据。举例说明,但这是您可以在每个文件中分离1个goroutine的地方,通过读取非阻塞选择中的通道来聚合所有信息,然后返回结果。如果有意义的话,您可以期望以异步,非阻塞的方式调用代码的所有入口点......