• GO Http 请求


    本瞎写脚本专题主要是记录使用 golang 一些问题和思考,当然也会将一部分隐私的部分屏蔽掉,只给出一小部分的内容。今天的主要内容是 http请求。Http 请求都是由请求和响应构成的。

    Http 请求

    Golang 中提供了 net/http库 ,可以直接通过此库进行 http 请求 GET,POST 等。

    1. // 不带参数的 get 请求
    2. resp, err := http.Get("https://www.test.yuanyuzhou.com/")
    3. // 带参数的 get 请求,可以使用 newRequest
    4. resp, err := http.NewRequest(http.MethodGet, url, nil)
    5. params := resp.URL.Query()
    6. params.add(key,value)
    7. // Post 请求
    8. resp, err := http.Post("https://www.test.yuanyuzhou.com","application/json",string.NewReader("key=value"))
    9. // 如果需要设置头参数
    10. resp.Header.Set("Cookie","saushajshauydia")
    11. // Form 提交表单
    12. params := url.Values{key:value}
    13. http.PostForm("http://" ,params)
    14. 复制代码

    Http响应

    响应由三个部分组成:

    • 响应行:协议、响应状态码和状态描述
    • 响应头部:包含各种头部字段信息,如 cookie
    • 响应体:携带客户端想要的数据

    在 Golang 的 net/http 包中,将 http 的响应封装在 http.ResponseWriter结构体

    1. type ResponseWriter interface {
    2.    Header() Header            
    3.    Write([]byte) (int, error)
    4.    WriteHeader(statusCode int)
    5. }
    6. 复制代码
    • Header : 用于设置/ 获取所有响应头信息
    • Writer :用于写入数据到响应实体
    • WriterHeader :用于设置响应状态码

    响应返回

    请求的响应结果由很多种,我们经常会返回 json 格式,文本信息,或者进行重定向。

    返回文本

    1. func responseBack(w http.ResponseWriter, r *http.Request){
    2.  w.Write([]byte("我是返回文本结果"))
    3. }
    4. 复制代码

    返回 JSON 格式数据

    1. type ResJson struct {
    2.  Code string `json:code`
    3.  Message string `json:message`
    4. }
    5. resJson := ResJson{
    6.  200,
    7.  "返回 Json 格式数据"
    8. }
    9. w.Header().Set("Content-Type", "application/json")
    10. w.Write(json.Marshal(resJson))
    11. 复制代码

    返回 Json 格式数据时,需要设置 header 的 contentType 内容为 application/ json

    ,这样返回结果才是 json 格式

    重定向

    1. func Redirect(w http.ResponseWriter, r *http.Request) {
    2.    w.Header().Set("Location", "https://xueyuanjun.com")
    3.    w.WriteHeader(301)
    4. }
    5. 复制代码

    需要注意,重定向请求,不需要设置响应实体,另外需要注意的是 w.Header().Set 必须在 w.WriteHeader 之前调用,因为一旦调用 w.WriteHeader 之后,就不能对响应头进行设置了。

    参考:GO Gin框架的Post/Get请求示例_dreamer'~的博客-CSDN博客_gin post请求
    链接:https://juejin.cn/post/7085361528177688590

  • 相关阅读:
    tinyxml 代码解读
    数据库性能问题解决方案—Redis企业版内存数据库
    Spring框架技术的核心与设计思想
    linux
    python气象科研学习路线和常用技巧
    人脸动作迁移——基于DaGAN深度感知的生成对抗网络操作对口型数字人
    干货 | 背熟这些 Docker 命令,面试再也不怕啦~
    Axure原型设计:从零开始到精通中文版
    VS code 下 makefile 【缺少分隔符 停下来】 报错解决方法
    iOS SwiftUI ☞ 生命周期
  • 原文地址:https://blog.csdn.net/dj1540225203/article/details/126056539