[Escribir un script golang] 03- Solicitud Http

¡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().Setdebe w.WriteHeaderllamarse w.WriteHeaderantes , no se puede establecer el encabezado de respuesta.

Supongo que te gusta

Origin juejin.im/post/7085361528177688590
Recomendado
Clasificación