Golang与Beego等Web框架在服务端开发中的主要区别是什么

Golang与Beego等Web框架在服务端开发中的主要区别是什么 最近我正在尝试学习Go语言,众所周知,Web后端有很多Web框架,我想为我的Web应用开发服务,但我不知道应该选择纯Go语言还是Go语言的Web框架?我只想使用REST API来集成我的React.js前端。

19 回复

我明白了,谢谢,我会的。

更多关于Golang与Beego等Web框架在服务端开发中的主要区别是什么的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


是否有完全使用Go语言开发的流行应用程序?

感谢您的回答,使用纯 Go,我可以为高流量应用创建服务吗?

如果决定使用框架,哪个Web框架最适合在Golang中构建REST API?

感谢您的回答,请问在 Go 语言中,哪种框架最适合各类项目?

Developerinsky: 为什么他们不迁移

潜在的性能提升是否值得付出重写代码的机会成本?毕竟,这些时间本可以用来开发客户愿意付费的新功能。

并非最终用户应用程序,但包括Kubernetes以及Hashicorp工具(如Consul、Nomad、Terraform、Vault)在内的开发应用均使用Go语言编写。

感谢您的回复。是的,我指的是没有框架,就像 Python 或 Django。Python 是通用语言,但 Django 是 Web 框架。这就是我对 Go 感到困惑的原因,因为 Go 中没有流行的 Web 框架。

Developerinsky:

可以为高流量应用创建服务吗

在我看来——可以。并发是Go的优势。但你可能需要更多地关注数据库的会话限制和会话长度。在这种情况下,框架可能——也可能没有——内置相关的功能。

虽然不是这里提出的确切情况,但以下是反对重写的经典建议:Things You Should Never Do, Part I – Joel on Software

许多Python开发者表示,Go语言凭借其性能优势可以在任何地方超越Python。我对此感到好奇,有多少公司将Go语言集成到他们的Web应用中。一些公司在他们的Web应用中使用Django,但多年后,他们也开始在这个应用中使用Go语言。他们为什么决定使用它?如果是这样,为什么他们不完全迁移到Go语言?

mje:

可能的性能提升是否值得投入重写代码的机会成本?毕竟这些时间本可以用来开发客户愿意付费的新功能。

确实——如果你有一个投入了数百万美元开发的应用程序,那么将其移植到 Go 语言很可能也需要数百万美元的成本。在问题严重到必须用性能更高的语言/技术栈进行重写之前,你可以花费数百万美元来增加大量的服务器算力来应对。这就是为什么人们不会每当出现新的/更好的东西时,就重写每一个应用程序。这太昂贵了。

Developerinsky:

我不知道应该选择纯 Go 语言还是 Go Web 框架?我只想使用 REST API 来集成我的 React.js 前端。

如果你想要一些“魔法”、更多的开销,有时甚至是一种完全不同的语言——那就选择框架。它可能会为你节省大量时间。

如果你想要更少的开销并使用原生的 Go——那就选择纯 Go。我制作了一个简单的 API,没有使用任何框架,也许能给你一些启发。

func main() {
    fmt.Println("hello world")
}

Go 的原生 HTTP 库非常出色,这在许多其他语言中并非如此。 对于许多使用场景,标准库中的 http 包就是最优、最完美的选择。

我曾有过编写一个具有复杂逻辑的高级反向代理的经验,当时我使用了 gin,它运行得非常完美。但我正将其迁移到标准库的 http 包,仅仅是因为对于我的使用场景来说,使用 Gin 没有额外的好处。 我当初使用 Gin,正是出于一种认为标准 http 库不可能真的那么好的看法。 但归根结底,你的项目情况可能并非如此。

总之,如果你想使用一个框架,我肯定推荐 Gin。

啊——Go语言中有许多流行的Web框架。但我觉得困惑在于:例如在Python中,Django就像是明显的赢家。而在Go生态系统中,有更多的选择。大多数框架在很大程度上都遵循标准库,因此它们(在大多数情况下)是相当可互换的。而且,仅使用标准库加上一些辅助函数,你就能走得很远,因为你对Web框架的大部分需求只是路由和序列化/反序列化,而后者是标准库的一部分。可以看看我这篇评论,其中谈到了仅使用标准库通过约定进行路由。如果你想完全从零开始,可以以此类方法作为起点。

func main() {
    fmt.Println("hello world")
}

Developerinsky:

有没有完全用 Go 语言开发的流行应用?

Best Golang Applications: 10 Companies Using the Go Language - Miquido

最佳 Go 语言应用:10 家使用 Go 语言的公司 - Miquido

想知道 Go 语言是否是您下一个产品开发的正确选择吗?请查看我们整理的十大使用 Go 语言开发的应用!

预计阅读时间:10 分钟

使用 Go 语言的公司 - 您每天使用的 7 大热门应用 [2023]

为什么 Go 语言在大型公司中如此受欢迎?查看著名的 Go 语言应用案例,了解这些公司为何使用它。

Developerinsky:

纯 Go 语言还是 Go 语言 Web 框架?

当你说“纯 Go 语言”时,是指标准库吗?因为据我所知,大多数可用的框架都是“纯 Go 语言”的。你担心的是不想给项目添加一堆臃肿的依赖项吗?

gorilla/muxgorilla 工具包 被许多项目使用。我目前在生产环境中就有几个使用 gorilla/mux 构建的 Web API,并且非常喜欢它。话虽如此,标准库中主要缺乏的是路由/参数匹配功能。如果你想要更轻量级、只提供这些功能的工具,可以看看 julienschmidt/httprouter。不过,对于第一个项目来说,我认为选择 gorilla 不会错。

总而言之,Go 语言几乎是为 Web API 量身定做的,非常适合你正在尝试做的事情。祝你好运,玩得开心!

Developerinsky:

在 Golang 中,哪个 Web 框架最适合构建 REST API?

和往常一样,没有所谓的“最佳”框架。这取决于个人偏好以及什么最适合任务。但 Gin 多次出现,是最受欢迎的框架之一。你可以用谷歌搜索一下你的问题,或者也许其他人想参与讨论……

Rapid Blog 网站图标

Rapid Blog – 2021年9月17日

Top Golang Web Frameworks to Choose In 2021 缩略图

2021年值得选择的顶级 Golang Web 框架 - Rapid Blog

Golang 已成为开发者编写 API 和开发 Web 服务的必备工具之一。这是谷歌的一项杰出举措,在开发者社区中人气飙升。许多人认为它是…

预计阅读时间:5 分钟

GoSolve 网站图标

GoSolve – 2023年1月7日

What are the best frameworks for Golang REST API? 缩略图

什么是构建 Golang REST API 的最佳框架?

对于你的需求,使用纯Go标准库或Beego等框架都能实现REST API开发,但两者在开发模式和效率上有明显差异。

1. 纯Go标准库开发

package main

import (
    "encoding/json"
    "net/http"
)

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}

func userHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    
    user := User{ID: 1, Name: "John"}
    json.NewEncoder(w).Encode(user)
}

func main() {
    http.HandleFunc("/api/user", userHandler)
    http.ListenAndServe(":8080", nil)
}

2. Beego框架开发

package main

import "github.com/astaxie/beego"

type UserController struct {
    beego.Controller
}

func (c *UserController) Get() {
    user := map[string]interface{}{
        "id":   1,
        "name": "John",
    }
    c.Data["json"] = user
    c.ServeJSON()
}

func main() {
    beego.Router("/api/user", &UserController{})
    beego.Run()
}

主要区别:

路由管理

  • 纯Go:手动解析路径和方法
  • Beego:自动路由到控制器方法

中间件支持

  • 纯Go:需要手动实现中间件链
  • Beego:内置中间件系统

开发效率

  • 纯Go:需要更多样板代码
  • Beego:快速生成CRUD操作

项目结构

  • 纯Go:自由组织代码结构
  • Beego:遵循MVC约定

对于React.js前端集成,两种方案都能提供JSON API。如果项目简单且需要轻量级方案,纯Go标准库足够。如果需要快速开发、数据库ORM、会话管理等完整功能,Beego更合适。

回到顶部