【Go语言Web开发】使用 JWT 保护您的 Go REST API
注意 - 本教程的完整源代码可以在这里找到:TutorialEdge/go-jwt-tutorial
JWT,或者更正式地称为 JSON Web 令牌,是一种紧凑的、URL 安全的方式,用于表示要在两方之间传输的声明。这本质上是一种令人困惑的说法,即 JWT 允许您以无状态但安全的方式将信息从客户端传输到服务器。
先决条件
在您阅读本文之前,您将需要以下内容:
- 您需要在开发机器上安装 Go 版本 1.11+。
介绍
JWT 标准使用 HMAC 算法的密钥或使用 RSA 或 ECDSA 的公钥/私钥对。
注意 - 如果您对 JWT 的正式定义感兴趣,那么我建议您查看 RFC:RFC-7519
这些在单页应用程序 (SPA) 中被大量用作安全通信的手段,因为它们允许我们做两件关键的事情:
【Go语言Web开发】使用 Golang 创建 RESTful API
如果您正在编写任何形式的 Web 应用程序,那么您很可能与 1 个或多个 REST API 交互,以填充应用程序的动态部分并执行更新或删除数据库中的数据等任务。
在本教程中,您将构建一个成熟的 REST API,它公开 GET、POST、DELETE 和 PUT 端点,随后将允许您执行全部范围的 CRUD 操作。
为了保持简单并专注于基本概念,我们不会与任何后端数据库技术交互来存储我们将要玩的文章。但是,我们将编写此 REST API,以便轻松更新我们将定义的函数,以便它们对数据库进行后续调用以执行任何必要的 CRUD 操作。
如果您想了解有关如何使用 Go 与数据库交互的更多信息,可以查看以下文章:
源代码 - 可以在此处找到本文的完整源代码:TutorialEdge/create-rest-api-in-go-tutorial
先决条件
您需要在开发机器上安装 Go 版本 1.11+。
【Go语言Web开发】使用 Gorilla Mux 和 PostgreSQL 在 Go 中构建和测试 REST API
介绍
本教程将说明如何在 Go 中构建由 PostgreSQL 支持的 REST API,使用 Gorilla Mux 进行路由。本教程将采用测试驱动开发,最后将解释如何在开发过程中对数据库进行持续测试。
目标
在本教程结束时,您将:
- 熟悉 Gorilla Mux,并且
- 了解如何使用持续集成 (CI) 针对数据库测试您的应用程序。
先决条件
本教程假设:
- 基本熟悉 Go 和 PostgreSQL,以及
- 你有工作的 Go 和 PostgreSQL 安装。您可以使用 Docker 轻松运行测试数据库。
您将在此存储库中找到演示的完整代码。
【Go语言Web开发】如何使用 Golang 和 PostgreSQL 构建 REST-API
Golang 是一种开源编程语言,可以轻松构建简单、可靠和高效的应用程序。它是一种新兴语言,开发了 Docker 和 Kubernetes 等技术。 Go 是一种编译语言。因此,当人们编写程序时,它会被编译并生成与该程序等效的机器代码。
本教程将讨论 Golang 并帮助我们使用 Golang 和 PostgreSQL 数据库创建一个 REST API 应用程序。
Golang 的历史
Go 是由谷歌开发的。 Go 通常被称为 Golang。由于其域名为golang.org,因此被称为Golang,原因是go.org无法使用。因此,Go 语言被缩写为 Golang,因此域名为 golang.org。
Golang 开发项目始于 2007 年,主要目标是利用多核处理器开发大型分布式系统和高度可扩展的网络服务器。
Golang 项目于 2009 年开源,其第一个初始版本 1.0 于 2012 年发布。Google Jetbrain 团队将 Go 称为最有前途的编程语言。
【Go语言Web开发 】使用 Fiber 在 Go 中构建基本的 REST API
Fiber 是一个新的基于 Go 的 Web 框架,它已经爆发并引起了编程社区的极大兴趣。 该框架的存储库一直位于 Go 编程语言的 GitHub 趋势页面上,因此,我想我会打开旧的 VS Code 并尝试构建一个简单的 REST API。
因此,在本教程中,我们将介绍如何使用这个新的 Fiber 框架开始在 Go 中构建自己的 REST API 系统!
在本教程结束时,我们将介绍:
- 项目设置
- 为图书管理系统构建 Simle CRUD REST API
- 使用附加包将项目分解为更可扩展的格式。
让我们潜入!
视频教程
本教程还提供视频格式:
https://youtu.be/Iq2qT0fRhAA
【Go语言开发】如何在 CentOS 7 上安装 Go 1.7
介绍
Go,通常被称为golang,是谷歌开发的一种开源编程语言。它采用极简主义的开发方法,可以轻松构建简单、可靠和高效的软件。本教程将指导您下载和安装 Go 1.7,以及编译和执行基本的“Hello, World!”。程序,在 CentOS 7 服务器上。
先决条件
在学习本教程之前,请确保您有一个具有 sudo 权限的常规非 root 用户。您可以从我们的指南 How To Create a Sudo User on CentOS 中了解有关如何设置具有这些权限的用户的更多信息。
第 1 步 – 下载 Go
截至 2016 年 9 月,CentOS 默认存储库中的 golang 软件包不是最新的。因此,我们将直接从 Go 网站手动下载包。确保复制与 64 位架构兼容的最新版本的链接。
首先进入一个可写目录:
cd /tmp
使用 curl 命令和 Go 中的链接下载 tarball:
【Go语言开发】如何在 macOS 上安装 Go 并设置本地编程环境
介绍
Go 是一种在谷歌受挫后诞生的编程语言。开发人员不断地不得不选择一种执行效率高但编译时间长的语言,或者选择一种易于编程但在生产中运行效率低下的语言。 Go 被设计为同时提供所有这三个功能:快速编译、易于编程和生产中的高效执行。
虽然 Go 是一种通用的编程语言,可用于许多不同的编程项目,但它特别适合网络/分布式系统程序,并赢得了“云语言”的美誉。它专注于帮助现代程序员使用一组强大的工具完成更多工作,通过使格式成为语言规范的一部分来消除对格式的争论,以及通过编译为单个二进制文件来简化部署。 Go 易于学习,关键字非常少,这使其成为初学者和经验丰富的开发人员的绝佳选择。
本教程将指导您在本地 macOS 机器上安装 Go 并通过命令行设置编程工作区。
先决条件
您将需要一台具有管理访问权限且连接到 Internet 的 macOS 计算机。
【Go语言开发】如何在 Windows 10 上安装 Go 并设置本地编程环境
介绍
Go 是一种在谷歌受挫后诞生的编程语言。开发人员不断地不得不选择一种执行效率高但编译时间长的语言,或者选择一种易于编程但在生产中运行效率低下的语言。 Go 被设计为同时提供所有这三个功能:快速编译、易于编程和生产中的高效执行。
虽然 Go 是一种通用的编程语言,可用于许多不同的编程项目,但它特别适合网络/分布式系统程序,并赢得了“云语言”的美誉。它专注于帮助现代程序员使用一组强大的工具完成更多工作,通过使格式成为语言规范的一部分来消除对格式的争论,以及通过编译为单个二进制文件来简化部署。 Go 易于学习,关键字非常少,这使其成为初学者和经验丰富的开发人员的绝佳选择。
本教程将指导您在本地 Windows 10 机器上安装 Go 并通过命令行设置编程环境。
先决条件
【Go语言开发】理解 Go 中的数据类型
介绍
数据类型指定在编写程序时特定变量将存储的值的种类。数据类型还决定了可以对数据执行哪些操作。
在本文中,我们将介绍 Go 原生的重要数据类型。这不是对数据类型的详尽调查,但会帮助您熟悉 Go 中可用的选项。了解一些基本数据类型将使您能够编写更清晰、高效执行的代码。
背景
考虑数据类型的一种方法是考虑我们在现实世界中使用的不同类型的数据。现实世界中的数据示例是数字:例如,我们可以使用整数(0、1、2、...)、整数(...、-1、0、1、...)和无理数(π)。
通常,在数学中,我们可以组合不同类型的数字,并得到某种答案。我们可能想在 π 上加 5,例如:
5 + π
我们可以保留等式作为解决无理数的答案,或者将 π 舍入为一个小数位数缩写的数字,然后将这些数字相加:
5 + π = 5 + 3.14 = 8.14
但是,如果我们开始尝试用另一种数据类型(例如单词)来评估数字,事情就变得不那么有意义了。我们将如何求解以下方程?
【Go语言开发】在 Go 中使用字符串的介绍
在 Go 中使用字符串的介绍
字符串是一个或多个字符(字母、数字、符号)的序列,可以是常量或变量。由 Unicode 组成的字符串是不可变的序列,这意味着它们是不变的。
因为文本是我们在日常生活中使用的一种常见的数据形式,所以字符串数据类型是编程的一个非常重要的构建块。
本 Go 教程将介绍如何创建和打印字符串、如何连接和复制字符串以及如何将字符串存储在变量中。
字符串文字
在 Go 中,字符串存在于反引号 `(有时称为反引号)或双引号内。根据您使用的引号,字符串将具有不同的特征。
使用反引号,如` ```bar``` `,将创建一个原始字符串文字。在原始字符串文字中,任何字符都可以出现在引号之间,反引号除外。这是一个原始字符串文字的示例:
`Say "hello" to Go!`
反斜杠在原始字符串文字中没有特殊含义。例如,\n 将显示为实际字符、反斜杠 \ 和字母 n。与解释的字符串文字不同,其中 \n 将插入一个实际的新行。
原始字符串文字也可用于创建多行字符串: