全局变量 in golang restful api.



我们在golang中有一个使用net/http包创建的post rest api,并使用gorilla/mux作为请求路由器和调度程序。api 将一个对象作为输入,假设 x 并将其设置为全局变量,通过其操作过程,api 使用该对象中的值并提供结果。

现在一切正常,直到我们发现当多个请求命中 api 时,其他请求会修改全局对象。例如,假设我发送了 x = 5 的请求,在此请求结束之前,另一个请求进来并设置 x = 10,这会导致第一个请求的多个结果,一个为 x=5,另一个为 x=10。

我的问题是,我可以为每个请求设置一个全局变量吗?我知道会话似乎是一个直截了当的答案,但它是否正确,因为它是一个 REST api,它应该是无状态的,如果它是正确的,我如何在 golang 中做到这一点?会话中应将什么用作唯一键?另外,如果会话不是要走的路,那么正确的方法是什么?

context包存在的原因之一是为了便于传递请求范围的值,请尝试一下。您必须将上下文传递给您的方法,但这似乎比使用某些包级变量和互斥锁进行同步要好得多。

https://blog.golang.org/context

最新更新