背景

我通常使用Python和Django 退出并跳起来思考自杀问题我编写了自己的网络应用程序,但是最近Rails,Sinatra,Flask,Django但是您会看到金字塔而不是Pyramid使用Go及其框架编写后端代码的Web应用程序(看起来像)。

Go是一种擅长并行处理的语言,因此广为人知,但是这次,我总结了我在Go中实际编写代码所学到的知识。

我写的代码

  • 我很久以前写的那个人,思考Go语言本身
  • 我很久以前写的一个用Gin输出简单JSON的代码
  • 我使用GQLGen编写了身份验证功能

使用的框架

  • 标准库
  • 杜松子酒
  • 戈姆
  • GQLGen
  • 智威汤逊

我发现了什么

关于Go语言本身

Go语言本身感觉与其他擅长异步处理的语言(例如NodeJS)几乎相同,只是将并行处理实现为语言功能之一。我印象深刻。但是,由于它是一种擅长于编译和并行/异步处理的语言,因此与Python相比,实现Web应用程序时似乎可以期望吞吐量显着提高。 (小感觉

关于框架

  • 标准库(net/http等)似乎意识到Web开发的使用。但是,Django的类似中间件的概念很麻烦,而没有使用其他库(例如chi(小小的平均感觉))。
  • 我认为在编写RESTful API时可以使用Gin。但是,如果您想编写Restful API,可以使用OpenAPI Generator。

  • Gorm是Python中的SQLAlchemy和Django中的Model。 Gorm作为ORM很正常。但是,自动迁移功能不如Django。 (请参阅Gorm的自动迁移和Django的迁移比较)

  • 在GQLGen中编写解析器时,不能引用ResponseWriter。换句话说,是否有必要在前端侧花费一些时间来将身份验证功能实现为后端? (示例:将会话的JWT作为有效载荷传递到前端,并将其作为cookie或标头插入前端。)

  • 最好将身份验证功能作为单独的库提供,而不要使其成为整体。

Gorm自动迁移与Django迁移

的比较

<表格>

功能 Gorm Django


<身体> 自动添加表格
自动删除表格
自动重命名
自动添加列
自动删除列
自动列更改
迁移版本 ?(但是,第三方库可以处理吗?)
自动生成迁移 ?(没有概念?)
手动迁移说明


... Gorm的自动迁移不可行吗?最好只使用ORM函数编写类似于Migration Manager的替代方案。

概要

Golang似乎对API开发很有用,但是目前很难将其用作Web应用程序的后端吗?好像另外,Django有一个用于管理模型数据的屏幕(django.contrib.admin),而Golang似乎提供了相同的功能(QOR),但是当我尝试使用此功能时,GQLGen的规范是什么?我不能很好地使用它。

因此,我认为Golang如果可以解决会话,SQL模式迁移和模型管理,则可以成为主要语言。