¡Acostúmbrate a escribir juntos! Este es el décimo día de mi participación en el "Nuggets Daily New Plan · April Update Challenge", haz clic para ver los detalles del evento .
prefacio
Este tema de secuencias de comandos es principalmente para registrar algunos problemas y pensamientos sobre el uso de golang. Por supuesto, algunas partes privadas se bloquearán y solo se proporcionará una pequeña parte del contenido. Lo principal hoy en día son las solicitudes http. Las solicitudes HTTP se componen de solicitudes y respuestas.
Solicitud HTTP
La biblioteca net/http se proporciona en Golang, y puede realizar solicitudes http GET, POST, etc. directamente a través de esta biblioteca.
// 不带参数的 get 请求
resp, err := http.Get("https://www.test.yuanyuzhou.com/")
// 带参数的 get 请求,可以使用 newRequest
resp, err := http.NewRequest(http.MethodGet, url, nil)
params := resp.URL.Query()
params.add(key,value)
// Post 请求
resp, err := http.Post("https://www.test.yuanyuzhou.com","application/json",string.NewReader("key=value"))
// 如果需要设置头参数
resp.Header.Set("Cookie","saushajshauydia")
// Form 提交表单
params := url.Values{key:value}
http.PostForm("http://" ,params)
复制代码
Respuesta HTTP
La respuesta consta de tres partes:
- Línea de respuesta: protocolo, código de estado de respuesta y descripción del estado
- Encabezado de respuesta: contiene diversa información de campo de encabezado, como cookies
- Cuerpo de respuesta: llevar los datos que el cliente quiere
En el paquete net/http de Golang, la respuesta http está encapsulada en la estructura http.ResponseWriter
type ResponseWriter interface {
Header() Header
Write([]byte) (int, error)
WriteHeader(statusCode int)
}
复制代码
- Encabezado: se usa para configurar/obtener toda la información del encabezado de respuesta
- Escritor: se utiliza para escribir datos en la entidad de respuesta.
- WriterHeader: se utiliza para establecer el código de estado de respuesta
respuesta devuelta
Hay muchos tipos de resultados de respuesta de la solicitud y, a menudo, devolvemos formato json, información de texto o redirección.
devolver texto
func responseBack(w http.ResponseWriter, r *http.Request){
w.Write([]byte("我是返回文本结果"))
}
复制代码
Devuelve datos en formato JSON
type ResJson struct {
Code string `json:code`
Message string `json:message`
}
resJson := ResJson{
200,
"返回 Json 格式数据"
}
w.Header().Set("Content-Type", "application/json")
w.Write(json.Marshal(resJson))
复制代码
Al devolver datos en formato Json, debe establecer el tipo de contenido del encabezado en application/json
, por lo que el resultado devuelto está en formato json
redirigir
func Redirect(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Location", "https://xueyuanjun.com")
w.WriteHeader(301)
}
复制代码
Cabe señalar que la solicitud de redirección no necesita establecer la entidad de respuesta, y debe tenerse en cuenta que w.Header().Set
debe w.WriteHeader
llamarse w.WriteHeader
antes , no se puede establecer el encabezado de respuesta.