介绍
Go 以其易于学习并提供最快的生产路径而闻名。通过标准库中内置的 HTTP 功能,您无需任何外部依赖即可拥有所需的一切。如果您习惯了臃肿的框架,对 HTTP 的较低级别访问可能会让人耳目一新,但它会导致大量的样板代码,最终会让一遍又一遍地编写变得很累。这就是切入点babyapi。我创建这个库是为了实现超级简单的 REST API 创建,而无需在整个应用程序上强制使用特定的结构。非常简单,连宝宝都能做!
婴儿API
您需要开始的只是babyapi一个实现该babyapi.Resource接口的结构。通过扩展结构可以轻松实现这一点babyapi.DefaultResource。完成这个简单的步骤后,您将拥有一个能够执行创建、读取、更新和删除操作的 HTTP API。此外,babyapi还提供了一个与 API 交互的 HTTP 客户端、一个可以轻松使用该客户端的 CLI,以及一些用于单元测试的快捷方式。
babyapi还可以带你超越基础知识。它提供了大量的选项来扩展 API 行为、添加验证,甚至自定义 API 路由。任何存储后端都可以通过实现简单的接口来集成Storage。
入门
目标babyapi是简单到婴儿都能做到。如前所述,babyapi.DefaultResource已经实现了所需的接口,因此它可以用作简单资源类型的起点。除了简单地实现接口之外,此默认结构还实现了一些围绕 ID 的验证,并用于rs/xid在新资源上创建唯一标识符。
下面是一个简单的示例,它扩展了默认值以创建 TODO 项的 API:
package main
import "github.com/calvinmclean/babyapi"
type TODO struct {
babyapi.DefaultResource
Title string
Description string
Completed bool
}
func main() {
api := babyapi.NewAPI[*TODO](
"TODOs", "/todos",
func(</