Go 中的 Rest API——使用 net/http 与像 Gorilla 这样的库

标签 rest go net-http gorilla

我看到 Go 本身有一个包 net/http,它足以提供启动和运行您自己的 REST API 所需的一切。但是,有多种框架;最流行的可能是 gorilla

考虑到我今后需要做的主要事情之一是构建 REST API,这些 API 将访问一些后端存储(数据库、缓存等)以执行 CRUD 操作,是使用 Go 的标准库本身很好,还是我应该考虑使用一些框架?

通常,人们会编写一个新的库或框架来解决现有库中存在的问题。但是,当实际需求很简单时,许多框架也往往会使事情变得更糟。

所以我有几个问题:

  1. go lang 中的基本库是否足以支持 REST 的基本到中等功能?

  2. 如果我最终使用内置库并且明天必须更改它以使用某些框架(如 gorilla ),那会有多困难/成本多高?

  3. 框架是真正解决问题还是只是让简单的问题复杂化?

如果有人在这里分享他的想法(他自己做出了这个选择),我将非常感激,同时我会研究更多自己的想法。

最佳答案

  1. net/http 包在大多数情况下可能已经足够了,但是如果你想简化你的开发,你应该使用第三方包,比如 Gorilla。 例如,net/httpServeMux 在为固定 URL 路径路由传入请求方面做得很好,但对于使用变量的漂亮路径,您将需要实现自定义使用 Gorilla 时,您将免费获得此多路复用器。

    另一个例子是如果你想指定 RESTful 资源 正确的 HTTP 方法,很难使用标准 http.ServeMux,同时使用 Gorilla 的 mux 包, 可以根据URL主机、路径、路径前缀匹配请求, 方案、 header 和查询值以及 HTTP 方法。

  2. Gorilla 的一大优点是它与 net/http 包完全兼容,并且可以在未来被替换。

  3. 见 1.

我完全鼓励您使用 Gorilla 的工具包来开发 REST 服务。

关于Go 中的 Rest API——使用 net/http 与像 Gorilla 这样的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38264363/

相关文章:

rest - 使用 Mongoose 进行错误处理

string - 为什么string不能转为uint8和int32以外的其他数据类型数组?

html - 如何使用 blackfriday 将 markdown 渲染到 golang 模板(html 或 tmpl)?

go - 如何提取unix时间戳并获取日期

ruby jiraSOAP net-http ssl 验证

Ruby Open-URI 库在 404 HTTP 错误代码中中止

java - Jersey 2 和 Guice 集成 : where is . getServiceLocator() 方法

rest - 在 RESTful 响应中包含聚合信息时的 URI

ruby-on-rails - Ruby - 增加代理请求超时

azure - 当 Azure REST API 用于 Blob 存储且查询字符串具有前缀或标记时,出现 403