Go中的RESTAPI——使用net/http与Gorilla之类的库

Go中的RESTAPI——使用net/http与Gorilla之类的库,rest,go,net-http,gorilla,Rest,Go,Net Http,Gorilla,我看到Go本身有一个包net/http,它足以提供启动和运行自己的restapi所需的一切。然而,有各种各样的框架;最流行的说法可能是大猩猩 考虑到我需要做的主要事情之一是构建REST API,它将访问一些后端存储(数据库、高速缓存等)来执行 CRUD> /COD>操作,与GO的标准库本身进行比较好吗?或者我应该考虑使用一些框架? 通常,人们编写一个新的库或框架来解决现有库中存在的问题。但当实际需求很简单时,很多框架也会使事情变得更糟 因此,我有几个问题: go lang中的基本库是否足以支持R

我看到Go本身有一个包
net/http
,它足以提供启动和运行自己的restapi所需的一切。然而,有各种各样的框架;最流行的说法可能是大猩猩

考虑到我需要做的主要事情之一是构建REST API,它将访问一些后端存储(数据库、高速缓存等)来执行<代码> CRUD> /COD>操作,与GO的标准库本身进行比较好吗?或者我应该考虑使用一些框架?

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

因此,我有几个问题:

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

  • 如果我最终使用了内置库,而明天又不得不将其更改为使用某种框架(如gorilla),那么这会有多困难/成本有多高

  • 框架是真的解决了问题,还是只是把简单的问题复杂化了


  • 我非常感谢有人在这里分享他的想法(他自己也经历了这个选择),同时我也在研究自己的想法。

    内置的
    net/http
    包足以构建一个完整的RESTAPI。但是,有些库可以使构建API稍微容易一些,特别是在RESTAPI比较复杂的情况下。从内置工具到任何合适的框架的更改都相对简单——它们通常接受
    http.Handler
    类型的处理程序

    然而,最终,这是一个非常有条件的选择。你能做的最好的事情就是检查每一个可用的解决方案,对比和比较,如果可能的话,用最好的选项建立一个概念证明。第一手经验会给你最好的指导

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

    另一个例子是,如果要使用 正确的HTTP方法,很难使用标准
    http.ServeMux
    ,而使用Gorilla的
    mux
    包, 可以根据URL主机、路径、路径前缀、, 方案、头和查询值以及HTTP方法

  • Gorilla的一大好处是它与
    net/http
    包完全兼容,将来可以替代它

  • 见1


  • 我完全鼓励您使用Gorilla的toolkit来开发REST服务。

    您有什么具体的使用案例?现在,它是简单的Get调用(我的Api从一些后端存储中提取数据),可能是数据库(Sql或无Sql)或缓存,或者两者兼而有之。展望未来,它也可能是所有积垢操作。也就是说,还有其他的事情(整洁的错误处理等)。非常感谢Shmulik,这正是我在这里寻找的答案。请记住,gorilla不是唯一的选择-我一直在使用httprouter,它稍微轻一点,我在这方面取得了很好的成功。它没有那么多的功能,就功能而言,它位于内置包和gorilla之间。感谢Adrian的回复。是的,我同意,我希望做一些概念验证来探索更多的第一手资料。但POC只能做很少的事情(我所能做的只是简单的RESTAPI,我认为它很简单,可能无法回答我在这里看到的问题)。因此,我想在一个更广泛的论坛上向那些花了一些时间用Go构建东西的开发人员提问。你的回答给了我一些启示,让我更清楚。