RESTful API #
一、项目结构 #
text
my-api/
├── cmd/
│ └── main.go
├── internal/
│ ├── handlers/
│ ├── models/
│ ├── services/
│ └── repositories/
├── pkg/
│ ├── config/
│ └── middleware/
├── go.mod
└── go.sum
二、完整示例 #
2.1 主入口 #
go
package main
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
"github.com/gofiber/fiber/v2/middleware/recover"
)
func main() {
app := fiber.New()
app.Use(logger.New())
app.Use(recover.New())
app.Get("/health", func(c *fiber.Ctx) error {
return c.JSON(fiber.Map{"status": "ok"})
})
api := app.Group("/api/v1")
users := api.Group("/users")
users.Get("/", listUsers)
users.Get("/:id", getUser)
users.Post("/", createUser)
users.Put("/:id", updateUser)
users.Delete("/:id", deleteUser)
app.Listen(":3000")
}
2.2 用户处理 #
go
type User struct {
ID string `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
}
var users = []User{}
func listUsers(c *fiber.Ctx) error {
return c.JSON(users)
}
func getUser(c *fiber.Ctx) error {
id := c.Params("id")
for _, user := range users {
if user.ID == id {
return c.JSON(user)
}
}
return c.Status(404).JSON(fiber.Map{"error": "Not found"})
}
func createUser(c *fiber.Ctx) error {
var user User
if err := c.BodyParser(&user); err != nil {
return c.Status(400).JSON(fiber.Map{"error": err.Error()})
}
users = append(users, user)
return c.Status(201).JSON(user)
}
func updateUser(c *fiber.Ctx) error {
id := c.Params("id")
var user User
if err := c.BodyParser(&user); err != nil {
return c.Status(400).JSON(fiber.Map{"error": err.Error()})
}
for i, u := range users {
if u.ID == id {
users[i] = user
return c.JSON(user)
}
}
return c.Status(404).JSON(fiber.Map{"error": "Not found"})
}
func deleteUser(c *fiber.Ctx) error {
id := c.Params("id")
for i, user := range users {
if user.ID == id {
users = append(users[:i], users[i+1:]...)
return c.SendStatus(204)
}
}
return c.Status(404).JSON(fiber.Map{"error": "Not found"})
}
三、总结 #
3.1 RESTful API设计原则 #
| 原则 | 说明 |
|---|---|
| 资源命名 | 使用名词 |
| HTTP方法 | GET/POST/PUT/DELETE |
| 状态码 | 正确使用HTTP状态码 |
| 版本化 | API版本管理 |
3.2 下一步 #
现在你已经掌握了RESTful API,接下来让我们学习 用户认证系统,了解完整的认证实现!
最后更新:2026-03-28