我看到Go本身有一个包let incomplete = R.wrap(R.filter, function(filter, array, isComplete) {
return filter( R.whereEq( { complete: isComplete }), array )
})
incomplete(data, false);
,足以提供启动和运行自己的REST API所需的一切。然而,有各种各样的框架,最流行的可能是大猩猩。
考虑到我需要做的主要事情之一是构建REST API,它通常会访问一些后端存储(数据库,缓存等)以执行CRUD操作,与Go一起使用是否合适?标准库本身还是我应该考虑使用一些框架?
通常,人们编写新的库或框架来解决现有库中存在的问题。但是,当实际需求很简单时,许多框架也会使事情变得更糟。
所以我几乎没有问题:
基本库是否足以支持REST的基本到中等功能?
如果我最终使用内置库并且明天必须将其更改为使用某些框架(如大猩猩)那么努力会有多么困难/昂贵?
框架是真的解决问题还是只是简单地解决问题?
我非常感谢有人在这里分享他的想法(他自己做出这个选择),而我则更多地研究自己的想法。
答案 0 :(得分:4)
对于大多数情况,net/http
包可能已足够,但如果您想简化开发,则应使用第三方软件包,例如Gorilla。
例如,net/http
' s ServeMux
在路由传入的固定网址路径请求方面做得非常出色,但对于使用变量的漂亮路径,您需要实现自定义多路复用器,而使用Gorilla时正在免费获得这个。
另一个例子是,如果要使用指定RESTful资源
正确的HTTP方法,很难使用标准
http.ServeMux
,与大猩猩的mux
套餐一样,
请求可以根据URL主机,路径,路径前缀,
方案,标头和查询值以及HTTP方法。
Gorilla的一大好处是它与net/http
包完全兼容,将来可以替代。
见1.
我完全鼓励您使用Gorilla的工具包来开发REST服务。
答案 1 :(得分:2)
内置的net/http
包足以构建完整的REST API。但是,某些库可以使构建API稍微容易一些,特别是在REST API很复杂的情况下。从内置设施更改为任何体面的框架相对简单 - 它们通常接受http.Handler
类型的处理程序。
最后,这是一个非常情境化的选择。您可以做的最好的事情是检查每个可用的解决方案,对比和比较,如果可能的话,用顶级选项构建概念证明。第一手经验将为您提供最佳指导。