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之向服务器发送请求与服务器响应给浏览器的主要内容,如果未能解决你的问题,请参考以下文章