当前位置: 首页 > news >正文

Go HTTP 调用(下)

今天分享的内容是 Go HTTP 调用。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!

前言

上篇文章 Go HTTP 调用(上) 介绍了如何进行 HTTP 调用,并通过 GET 请求的例子,讲述了 query 参数和 header 参数如何设置,以及响应体的获取方法。 本文继上文,接下来会通过 POST 请求,对其他参数的设置进行介绍。

POST 请求

发起 HTTP POST 请求时,携带 json 格式的 body 参数是最常见的,这是因为 json 格式的参数可读性好,对于层级结构较为复杂的数据也能应对,并且这符合 RestFul API 的规范。因此以下的示例为:发送 HTTP POST 请求,并携带 json 类型的 body 参数。

发起 HTTP POST 请求时,携带 json 格式的 body 参数是最常见的,这是因为 json 格式的参数可读性好,对于层级结构较为复杂的数据也能应对,并且这符合 RestFul API 的规范。因此以下的示例为:发送 HTTP POST 请求,并携带 json 类型的 body 参数。作者:陈明勇
链接:https://juejin.cn/post/7177033678369849381
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先定义 User 结构体,创建结构体变量 user,通过 json.Marshal 函数,将 user 转成 []byte 数据,然后通过 bytes.NewReader 函数,将 []byte 数据转成 Reader 指针变量。
http.NewRequestWithContext 函数,最后一个参数是为 body 参数,接收的变量类型是 Reader 接口的实现体。第一步将 user 转成 Reader 指针变量就是为了在这里进行传递。
传递 json 类型的 body 参数,需要在请求头参数里设置 Content-Type 的值为 application/json。
如果是发送 application/x-www-form-urlencoded 类型的表单数据,需要改写 body 参数的生成代码:

values := url.Values{}
values.Set("username", "1234")
values.Set("password", "1234")
bodyReader := strings.NewReader(values.Encode())

小结

本文通过 POST 请求,介绍了如何传递 json 类型和 application/x-www-form-urlencoded 类型的 body 参数。对于 HTTP 中的 query 参数和 body 参数的如何传递,上下两篇文章已经通过例子进行介绍。虽然举的例子是 GET 和 POST 请求,如果想要调用 PUT、DELETE 等请求,只需要在 NewRequestWithContext 函数中,指定第二个参数为 http.MethodPut、http.MethodDelete 等就行。

http://www.lryc.cn/news/191531.html

相关文章:

  • mysql5.7获取json数组中的某个对象
  • PTE考试解析
  • UE4和C++ 开发-UE4怎么删除C++类
  • 基于图像识别的迁移学习之一
  • k8s使用
  • HTML图片标签(2) HTML5+CSS3+移动web 前端开发入门笔记(三)
  • jwttoken+redis+springsecurity
  • asp.net会议预约管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
  • 十六、【橡皮擦工具组】
  • BAT学习——计算当前路径下指定格式文件的MD5值,将文件名与MD5值写入文本
  • 排序算法(stable_sort(), sort())
  • 【atoi函数详解】
  • 字符串左旋 与 字符串旋转结果
  • 真人现在猫鼠躲猫猫游戏搭建流程:专业思考与深度思考
  • 计算机导论实验——Linux基础入门
  • 服务运营 |摘要:学术+业界-近期前沿运筹医疗合作精选
  • 基于Dockerfile创建镜像
  • 架构实战关键知识点
  • M1Mac开启x86_64命令行archlinux虚拟机的最佳实践(qemu)
  • 深度神经网络压缩与加速技术
  • 系统架构设计:11 论湖仓一体架构及其应用
  • Linux系统编程_文件编程第1天:打开、写入、读取、关闭文件等编程
  • scapy构造ND报文
  • c++设计模式之单例设计模式
  • App自动化测试环境搭建
  • win10搭建gtest测试环境+vs2019
  • 【代码随想录】算法训练营 第二天 第一章 数组 Part 2
  • 在深度学习中,累计不同批次的损失估计总体损失
  • 论文导读|八月下旬Operations Research文章精选:定价问题专题
  • (三)Apache log4net™ 手册 -演示