【发布时间】:2014-11-06 00:22:31
【问题描述】:
我开始在 go(golang) 中构建一个 api,但我有几个问题......
所以在我的 main 函数或 init 函数中(因为我可能会使用 appengine),我正在考虑调用一个函数,该函数将使用 gorilla mux 定义我的所有路由。我的应用程序(post、cmets 等)的每一个部分都将拥有一个包含其结构/方法/功能的包。
问题:
因为我想在一个函数中定义路由,我是否需要在这个文件中导入我的所有包,以将请求发送到正确的处理程序?
helper 函数怎么样,例如,我想为所有必要的处理程序将响应的
content type设置为application/json,我将如何做到这一点?
我不是在寻找框架,只是一些关于如何以 golang 方式克服这些问题的指针。
【问题讨论】:
-
我认为您可能需要从
main-like 包中调用Register,该包导入所有包含视图的包(并且不被它们导入),甚至从各种包'init()s(但是,嗯,我看到了将您的路线组织在一个地方的吸引力)。如果您的帖子/评论/等,可以达到一定大小的应用程序。视图紧密集成,无论如何它们可能不需要是不同的包。这是我对有关包布局的相关 SO Q 的回答:stackoverflow.com/questions/20380333/… -
似乎 JSON 内容类型/编码的东西基本上是一个实用功能,可能由定义视图的包导入。所以:“顶部”上的路线,“底部”上的实用程序。实际上有一篇很棒的博客文章(比如“我们如何在没有框架的情况下使用 Go”)涵盖了他们如何处理这个问题以及其他一些小事情;不过我找不到。
-
如果有人可以找到“我们如何在没有框架的情况下使用 Go”的帖子,我会永远爱你。我有点记得他们编写自己的包装器来进行 JSON 编码/解码,但我现在真的找不到。
标签: go