神刀安全网

Introducing Echo v2 fast and highly customizable with many new features

Introducing Echo v2 fast and highly customizable with many new features Echo

Echo is a fast and unfancy web framework for Go (Golang). Up to 10x faster than the rest.

Features

  • Optimized HTTP router which smartly prioritize routes.
  • Build robust and scalable RESTful APIs.
  • Run with standard HTTP server or FastHTTP server.
  • Group APIs.
  • Extensible middleware framework.
  • Define middleware at root, group or route level.
  • Handy functions to send variety of HTTP responses.
  • Centralized HTTP error handling.
  • Template rendering with any template engine.
  • Define your format for the logger.
  • Highly customizable.

Performance

Quick Start

Installation

$ go get github.com/labstack/echo/... 

Hello, World!

Create server.go

package main  import (  "net/http"   "github.com/labstack/echo" )  func main() {  e := echo.New()  e.Get("/hello", func(c echo.Context) error {   return c.String(http.StatusOK, "Hello, World!")  }) } 

Start server

$ go run server.go 

Browse to http://localhost:1323 and you should see Hello, World! on the page.

Routing

e.Post("/users", saveUser) e.Get("/users/:id", getUser) e.Put("/users/:id", updateUser) e.Delete("/users/:id", deleteUser) 

Path Parameters

func getUser(c echo.Context) error {  // User ID from path `users/:id`  id := c.Param("id") } 

Query Parameters

/show?team=x-men&member=wolverine

func show(c echo.Context) error {  // Get team and member from the query string  team := c.QueryParam("team")  member := c.QueryParam("team") } 

Form application/x-www-form-urlencoded

POST /save

name value
name Joe Smith
email [email protected]
func save(c echo.Context) error {  // Get name and email  name := c.FormValue("name")  email := c.FormParam("email") } 

Form multipart/form-data

POST /save

name value
name Joe Smith
email [email protected]
avatar avatar
func save(c echo.Context) error {  // Get name and email  name := c.FormValue("name")  email := c.FormParam("email")   //------------  // Get avatar  //------------   avatar, err := c.FormFile("avatar")  if err != nil {   return err  }  src, err := file.Open()  if err != nil {   return err  }  defer src.Close()   // Destination  file, err := os.Create(file.Filename)  if err != nil {   return err  }  defer file.Close()   // Copy  if _, err = io.Copy(file, avatar); err != nil {   return err  } } 

Handling Request

  • Bind JSON or XML payload into Go struct based on Content-Type request header.
  • Render response as JSON or XML with status code.
type User struct {  Name  string `json:"name" xml:"name"`  Email string `json:"email" xml:"email"` }  e.Post("/users", func(c echo.Context) error {  u := new(User)  if err := c.Bind(u); err != nil {   return err  }  return c.JSON(http.StatusCreated, u)  // or  // return c.XML(http.StatusCreated, u) }) 

Static Content

Server any file from static directory for path /static/* .

e.Static("/static", "static") 

More…

Template Rendering

Middleware

// Root level middleware e.Use(middleware.Logger()) e.Use(middleware.Recover())  // Group level middleware g := e.Group("/admin") g.Use(middleware.BasicAuth(func(username, password string) bool {  if username == "joe" && password == "secret" {   return true  }  return false }))  // Route level middleware track := func(next echo.HandlerFunc) echo.HandlerFunc {  return func(c echo.Context) error {   println("request to /users")   return next(c)  } } e.Get("/users", func(c echo.Context) error {  return c.String(http.StatusOK, "/users") }, track) 

More…

Next

  • Head over toguide
  • Browserecipes

Need help?

Support Us

  • ☆ the project
  • Donate
  • :globe_with_meridians: spread the word

Contribute

Use issues for everything

  • Report issues
  • Discuss on chat before sending a pull request
  • Suggest new features or enhancements
  • Improve/fix documentation

Credits

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » Introducing Echo v2 fast and highly customizable with many new features

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
分享按钮