goweb之向服务器发送请求与服务器响应给浏览器

Posted 程序彤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了goweb之向服务器发送请求与服务器响应给浏览器相关的知识,希望对你有一定的参考价值。

请求与响应

package main

import (
	"encoding/json"
	"fmt"
	"go_codes/day0609_db/model"
	"net/http"
)

func handler(rw http.ResponseWriter,r *http.Request){
	fmt.Fprintln(rw,"你发送的请求地址是",r.URL.Path)
	fmt.Fprintln(rw,"你发送的请求地址后的请求详细查询参数",r.URL.RawQuery)
	fmt.Fprintln(rw,"请求头中的所有信息",r.Header)
	fmt.Fprintln(rw,"请求头中的cookie信息(带中括号)",r.Header["Cookie"])
	fmt.Fprintln(rw,"请求头中的cookie信息",r.Header.Get("Cookie"))
	//len := r.ContentLength// 获取请求体内容长度
	//body := make([]byte,len)
	//r.Body.Read(body)// 将请求体的内容读到body中
	//fmt.Fprintln(rw,"请求体中的所有信息",string(body))

	// 获取请求参数(常用)
	// 法一:必须先解析表单(事先)
	//r.ParseForm()
	//fmt.Fprintln(rw,"请求参数有:",r.Form) // form表单输入的值在url请求参数前
	//fmt.Fprintln(rw,"POST请求的form表单的请求参数",r.Form)
	// 如果是文件上传则用multipartForm
	// 法二:快速获取请求参数(底层自动调用)
	fmt.Fprintln(rw,"URL中的请求参数值",r.FormValue("user")) // 仍优先拿到表单中的输入值
	fmt.Fprintln(rw,"form表单中的请求参数值",r.PostFormValue("username")) // 仍优先拿到表单中的输入值
}

/*
测试响应json数据
 */
func testJsonResp(rw http.ResponseWriter,r *http.Request){
	rw.Header().Set("Content-Type","application/json")// 设置响应内容类型
	user:=model.User{
		Id: 1,
		Username: "admin",
		Password: "123",
		Email: "admin@qq.com",
	}
	jsonByte,_ := json.Marshal(user) // 转json
	rw.Write(jsonByte)
}
/*
测试重定向
 */
func testRedirect(rw http.ResponseWriter,r *http.Request){
	rw.Header().Set("Location","https://www.baidu.com")
	rw.WriteHeader(302) // 设置响应状态码
}
func main() {
	http.HandleFunc("/req",handler)
	http.HandleFunc("/resp",testJsonResp)
	http.HandleFunc("/redirect",testRedirect)
	http.ListenAndServe(":8080",nil)
}

index.html 表单发送post请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主页</title>
</head>
<body>
<form action="http://localhost:8080/req" method="post" enctype="application/x-www-form-urlencoded">
    用户名 <br>
    <input type="text" name="username"> <br>
    密码 <br>
    <input type="password" name="password"> <br>
    <input type="submit">
</form>
</body>
</html>	

以上是关于goweb之向服务器发送请求与服务器响应给浏览器的主要内容,如果未能解决你的问题,请参考以下文章

tornado 03 请求与响应

GoWeb(上)之服务端处理请求请求响应

GoWeb(上)之服务端处理请求请求响应

GoWeb(上)之服务端处理请求请求响应

浅析HTTP协议的请求报文和响应报文

网络爬虫前奏:HTTP的请求与响应