golang server示例

一个简单的web服务器

package main

import (
	"fmt"
	"log"
	"net/http"
)

func main() {
	http.HandleFunc("/", handler)
	log.Fatal(http.ListenAndServe("localhost:8888", nil))
}

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Println("url.path is ", r.URL.Path)
}

简单看下Request结构体中几个重要成员

type Request struct {
    // Form contains the parsed form data, including both the URL
	// field's query parameters and the POST or PUT form data.
	// This field is only available after ParseForm is called.
	// The HTTP client ignores Form and uses Body instead.
	Form url.Values

	// PostForm contains the parsed form data from POST, PATCH,
	// or PUT body parameters.
	//
	// This field is only available after ParseForm is called.
	// The HTTP client ignores PostForm and uses Body instead.
	PostForm url.Values

	// MultipartForm is the parsed multipart form, including file uploads.
	// This field is only available after ParseMultipartForm is called.
	// The HTTP client ignores MultipartForm and uses Body instead.
	MultipartForm *multipart.Form
}

获取get参数

func handler(w http.ResponseWriter, r *http.Request) {
	r.ParseForm()
	fmt.Println("value of param key is:", r.Form.Get("key"))
}

获取post参数

提交方式: application/x-www-form-urlencoded

func handler(w http.ResponseWriter, r *http.Request) {
	r.ParseForm()
	fmt.Println("value of param key is:", r.PostFormValue("key"))
}

提交方式: json

type RequestParm struct {
	Name      string `json:"name"`
	Age       int    `json:"age"`
	ScoreList []int  `json:"score_list"`
}
// NewDecoder
func handler(w http.ResponseWriter, r *http.Request) {
	req := &RequestParm{}
	err := json.NewDecoder(r.Body).Decode(req)
	if err != nil {
		fmt.Println("json decode error")
		return
	}
	fmt.Println(req)
}
// Unmarshal
func handler(w http.ResponseWriter, r *http.Request) {
	req := &RequestParm{}

	body, err := ioutil.ReadAll(r.Body)
	if err != nil {
		panic(err)
	}

	err = json.Unmarshal(body, req)
	if err != nil {
		panic(err)
	}

	fmt.Println(req)
}

参考资料

四种常见的 POST 提交数据方式

posted @ 2018-08-12 14:37  Sawyer Ford  阅读(564)  评论(0编辑  收藏  举报