清风徐来
Michael's Blog
Demo 学 Echo Part3 解析HTTP请求

请输入图片描述 解析HTTP请求

package main

import (
	"fmt"
	"net/http"

	"github.com/labstack/echo"
)

type User struct {
	Name  string `json:"name" form:"name" query:"name"`
	Email string `json:"email" form:"email" query:"email"`
}

func main() {
	r := echo.New()

	r.Any("/user", func(c echo.Context) (err error) {
		u := new(User)
		if err = c.Bind(u); err != nil {
			return
		}

		return c.JSON(http.StatusOK, u)
	})

	fmt.Println("server started at :9000")
	r.Start(":9000")
}

测试验证

curl -X POST http://localhost:9000/user \
     -d 'name=Joe' \
     -d 'email=nope@novalagung.com'

# output => {"name":"Nope","email":"nope@novalagung.com"}

curl -X POST http://localhost:9000/user \
     -H 'Content-Type: application/json' \
     -d '{"name":"Nope","email":"nope@novalagung.com"}'

# output => {"name":"Nope","email":"nope@novalagung.com"}

curl -X POST http://localhost:9000/user \
     -H 'Content-Type: application/xml' \
     -d '<?xml version="1.0"?>\
        <Data>\
            <Name>Joe</Name>\
            <Email>nope@novalagung.com</Email>\
        </Data>'

# output => {"name":"Joe","email":"nope@novalagung.com"}

很神奇,没有定义xml,居然也可以解析出来


最后修改于 2019-08-17