多应用+插件架构,代码干净,支持一键云编译,码云点赞13K star,4.8-4.12 预售价格198元 广告
## CRUD 示例 ### 服务端 `server.go` ```go package main import ( "net/http" "strconv" "github.com/labstack/echo" "github.com/labstack/echo/middleware" ) type ( user struct { ID int `json:"id"` Name string `json:"name"` } ) var ( users = map[int]*user{} seq = 1 ) //---------- // Handlers //---------- func createUser(c echo.Context) error { u := &user{ ID: seq, } if err := c.Bind(u); err != nil { return err } users[u.ID] = u seq++ return c.JSON(http.StatusCreated, u) } func getUser(c echo.Context) error { id, _ := strconv.Atoi(c.Param("id")) return c.JSON(http.StatusOK, users[id]) } func updateUser(c echo.Context) error { u := new(user) if err := c.Bind(u); err != nil { return err } id, _ := strconv.Atoi(c.Param("id")) users[id].Name = u.Name return c.JSON(http.StatusOK, users[id]) } func deleteUser(c echo.Context) error { id, _ := strconv.Atoi(c.Param("id")) delete(users, id) return c.NoContent(http.StatusNoContent) } func main() { e := echo.New() // Middleware e.Use(middleware.Logger()) e.Use(middleware.Recover()) // Routes e.POST("/users", createUser) e.GET("/users/:id", getUser) e.PUT("/users/:id", updateUser) e.DELETE("/users/:id", deleteUser) // Start server e.Logger.Fatal(e.Start(":1323")) } ``` ### 客户端 `curl` #### 创建 User ```sh curl -X POST \ -H 'Content-Type: application/json' \ -d '{"name":"Joe Smith"}' \ localhost:1323/users ``` *Response* ```js { "id": 1, "name": "Joe Smith" } ``` #### 获取 User ```sh curl localhost:1323/users/1 ``` *Response* ```js { "id": 1, "name": "Joe Smith" } ``` #### 更新 User ```sh curl -X PUT \ -H 'Content-Type: application/json' \ -d '{"name":"Joe"}' \ localhost:1323/users/1 ``` *Response* ```js { "id": 1, "name": "Joe" } ``` #### 删除 User ```sh curl -X DELETE localhost:1323/users/1 ``` *Response* `NoContent - 204`