优雅的实现 Golang REST API 架构


本文摘自php中文网,作者Guanhui,侵删。

有一种说法,golang 编写的 API 不能像其他语言那样简单和通用。但实际上,我遇到很多 REST API 的代码,非常多的抽象,使得代码库变得混乱和复杂,最终伤害了可读性和可维护性。

这一系列,我们将通过如何建立一个产品级的 REST API TODO 列表,一个可持续扩展架构,从路由和代码接口开始,然后添加一个 mongo 的数据库和一个 badger 数据层,然后是授权协议层(OAuth 2.0)

在这一系列中我们将使用 chi 路由。

file

为什么选择用 Chi ,而不是用标准库或者 Gin 或者 router-x 进行路由?

嗯,其实选择用什么并不重要。无论你使用什么来进行路由,本系列中讨论的概念都将是有用的。但是有下面的这些优点可以让我认为 Chi-router 比大多数替代方案更优越:

  • net/http 标准库 100% 兼容---可以在 Go 生态系统中使用任何与net / http 兼容的 http 或中间件 pkg

  • 专为模块化/可组合 API 设计 - 中间件,内联中间件,路由组和子路由器安装

  • 没有外部依赖---纯粹的就是 Go 1.7+ stdlib + net / http

  • 强悍?---?有很多公司正在使用,比如:Pressly,CloudFlare,Heroku,99Designs

  • 轻量级?---?cloc'd in ~1000 LOC for the chi router

  • 速度很快

我最喜欢的是,你为其他 net / http 兼容路由器编写的旧的 http 处理程序和中间件也可以在正常运行。

让我们开始吧

首先,我们创建一个 main.go 。我们程序的基础(或者说中心元件 ?)

阅读剩余部分

相关阅读 >>

Golang中“var”与“:=”的区别

Go属于动态语言么

Golang怎么判断slice是否为空

排序算法 (桶、冒泡、快速)

【paspberry pi】部署kubernetes

n皇后问题(Go版本)

详解Golang中函数作为值与类型

Golang通用链接池的实现

手把手带你进行Golang环境配置

Golang怎样读取json数据

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...