Golang網絡編程-RESTFUL方法

案例一、極簡WEB服務:HelloWeb.go

package main

import (
	"fmt"
	"net/http"
)

func handler(writer http.ResponseWriter, request *http.Request) {
	fmt.Fprintf(writer, "Hello Web, %s!", request.URL.Path[1:])
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":9090", nil)
}

案例二、RESTFUL方法(GET):Get.go

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
)

func myGet() {
	client := &http.Client{}
	request, err := http.NewRequest("GET", "https://www.baidu.com", nil)
	if err != nil {
		fmt.Println("Error: ", err)
		os.Exit(1)
	}

	respose, err := client.Do(request)
	defer respose.Body.Close()

	cookies := respose.Cookies()
	fmt.Println(cookies)
	if body, err := ioutil.ReadAll(respose.Body); err != nil {
		fmt.Println("Err:", err)
		os.Exit(2)
	} else {
		fmt.Println(string(body))
		//fmt.Println(json.Decoder{})
	}
}

func main() {
	myGet()
}

案例三、RESTFUL方法(GET)返回JSON串:GetPostman.go

package main

import (
	"fmt"
	"io/ioutil"
	//"os"
	//"path/filepath"
	"net/http"
)

func main() {

	url := "https://postman-echo.com/get?foo1=bar1&foo2=bar2"
	method := "GET"

	client := &http.Client {
		//CheckRedirect: func(req *http.Request, via []*http.Request) error {
		//	return http.ErrUseLastResponse
		//},
	}
	req, err := http.NewRequest(method, url, nil)

	if err != nil {
		fmt.Println(err)
	}
	res, err := client.Do(req)
	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(string(body))
}

案例四、RESTFUL方法(POST)返回JSON串:PostForm.go

package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://postman-echo.com/post"
	method := "POST"

	payload := strings.NewReader("foo1=bar1&foo2=bar2")

	client := &http.Client {
		CheckRedirect: func(req *http.Request, via []*http.Request) error {
			return http.ErrUseLastResponse
		},
	}
	req, err := http.NewRequest(method, url, payload)

	if err != nil {
		fmt.Println(err)
	}
	res, err := client.Do(req)
	defer res.Body.Close()
	body, err := ioutil.ReadAll(res.Body)

	fmt.Println(string(body))
}

案例五、RESTFUL方法(POST)返回JSON串:PostRaw.go

package main

import (
	"fmt"
	"strings"
	"io/ioutil"
	"net/http"
)

func main() {

	url := "https://postman-echo.com/post"
	method := "POST"

	payload := strings.NewReader("This is expected to be sent back as part of response body.")

	client := &http.Client{}
	req, err := http.NewRequest(method, url, payload)

	if err != nil {
		fmt.Println(err)
	}
	res, err := client.Do(req)
	defer res.Body.Close()
	body, err := ioutil.ReadAll(res.Body)

	fmt.Println(string(body))
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章