跳转到主要内容

【Go开发】使用Gorm和Fiber构建Go REST API!

Fiber is a new Go-based web framework which has exploded onto the scene and generated a lot of interest from the programming community. The repository for the framework has consistently been on the GitHub Trending page for the Go programming language and as such, I thought I would open up the old VS Code and try my hand at building a simple REST API.

【开发语言】Python的创建者分享了他对Rust、Go、Julia和TypeScript的想法

Python创建者Guido van Rossum分享了他对其他一些编程语言的看法。

这位“仁慈的独裁者”本人在接受微软首席云拥护者经理弗朗切斯卡·拉泽里长达一小时的采访时分享了自己的观点。

“我热爱语言,至少在理论上是这样,”范·罗苏姆说。“我总是阅读语言教程,但我非常不擅长下载语言实现并尝试编写代码,因为说‘哦,我已经知道如何用Python实现’几乎总是很容易。”。

当然,这并不意味着Van Rossum对其他语言没有什么想法。

Van Rossum表示Rust“听起来像是一种很好的语言”,并且它在C++上有所改进,因为它更难绕过编译器中的检查,并以“近乎完美”的方式解决内存分配问题。

在谷歌设计的Go语言中,Van Rossum认为,在所有新的通用语言中,Go“可能是最具Python风格的”。

Julia是一种以命令式、函数式和面向对象编程为特色的编程语言,并为C、Fortran、C++、Python、R、Java和许多其他语言提供了外部函数接口。

【编程语言】最流行的编程语言及其学习地点

让我们仔细看看最流行的编程语言,这样您就可以决定哪种语言适合您。技术专业人士使用的顶级编程语言包括通用、面向对象和多范式语言。

促进职业发展的十大编程语言:我们的选择

这里的10种编程语言在难度级别和对不同角色的适用性方面有所不同。

为了确定要学习的最佳编程语言,我们考虑了两个主要因素。我们评估了现代软件专业人员在申请职位时应该了解的编程语言,以及他们在科技行业中使用率的提高。

你可以通过编程学位、编码训练营或练习编程问题的网站来学习和练习许多这些语言。

语言按字母顺序排列。

C类#

难度:中级

2001年,微软将C#作为高级语言开发,用于开发web、桌面和移动应用程序。C#是C族中的一种编程语言,其语法与C、C++和Java相似。

C#是通用的、多范式的、面向对象的。它在.Net框架上运行。它的起源意味着它是一种与微软集成的编程语言。C#的速度和效率使它成为游戏开发者的最爱。

需要考虑的课程:

【Go语言数据库开发】Go 中的 Gorm 高级查询

智能选择字段


GORM 允许使用 Select 选择特定字段,如果您经常在应用程序中使用它,也许您想定义一个较小的结构供 API 使用,它可以自动选择特定字段,例如:

type User struct {
  ID     uint
  Name   string
  Age    int
  Gender string
  // hundreds of fields
}

type APIUser struct {
  ID   uint
  Name string
}

// Select `id`, `name` automatically when querying
db.Model(&User{}).Limit(10).Find(&APIUser{})
// SELECT `id`, `name` FROM `users` LIMIT 10

注意 QueryFields 模式将根据当前模型的所有字段名称进行选择

【Go语言Web开发】Go 代码示例:json.Encoder 和 json.Decoder

这些是为客户端和服务器端编码/解码 json 的代码示例。

让我们从服务器端开始。

解码请求


定义请求参数:首先,定义表示请求参数的结构。

type UserRequest struct {
        Name  string `json:"name"`
        Email string `json:"email"`
}


json.Decoder:在请求处理程序中,用请求体创建一个解码器,并用结构体的指针调用解码方法。

【Go语言Web开发】使用 Go 的 net/http 包对 JSON 进行编码和解码

这是一个非常常见的任务:编码 JSON 并将其发送到服务器,在服务器上解码 JSON,反之亦然。令人惊讶的是,关于如何做到这一点的现有资源并不是很清楚。因此,让我们来看看每个案例,对于以下简单的 User 对象:

type User struct{
    Id      string
    Balance uint64
}


在 POST/PUT 请求的正文中发送 JSON


让我们从最棘手的开始:Go 的 http.Request 的主体是一个 io.Reader,如果你有一个结构,它就不太适合 - 你需要先编写结构,然后将其复制到阅读器。

【Go语言中级开发】结构到 JSON 的 Golang 数组

下面的代码是将结构数组转换为 JSON 的示例。

package main

import (
"log"
"encoding/json"
)

type Fruit struct {
Name string `json:"name"`
Quantity int `json:"quantity"`
}

func main() {
a := Fruit{Name:"Apple",Quantity:1}
o := Fruit{Name:"Orange",Quantity:2}

var fs []Fruit
fs = append(fs, a)
fs = append(fs, o)
log.Println(fs)

j, _ := json.Marshal(fs)
log.Println(string(j))

j, _ = json.MarshalIndent(fs, "", " ")
log.Println(string(j))
}

 

运行它将产生如下输出。

【Go语言中级开发】Golang 中 JSON 的完整指南(附示例)

在这篇文章中,我们将学习如何以最简单的方式在 Go 中使用 JSON。

我们将学习如何将 JSON 原始数据(字符串或字节)转换为 Go 类型,如结构、数组和切片,以及非结构化数据,如映射和空接口。

banner

JSON 被用作数据序列化的事实标准,在本文结束时,您将熟悉如何在 Go Unmarshaling Raw JSON Data 中对 JSON 进行编组(编码)和解组(解码)

Unmarshaling Raw JSON Data


Go 的 JSON 标准库提供的 Unmarshal 函数可以让我们以 []byte 变量的形式解析原始 JSON 数据。

我们可以将 JSON 字符串转换为字节,并将数据解组为变量地址: