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

使用Golang开发一个HTTP客户端请求命令行工具

什么是Golang

Golang,也被称为Go语言,是由Google开发的一种开源的编程语言。它于2007年开始设计,于2009年首次公开发布。Golang被设计成一种通用的编程语言,旨在提供简单、高效和可靠的软件开发方式。Golang具有静态类型、垃圾回收、并发编程和内存安全等特性。

Golang以其简洁、直观和高效的语法而受到广泛喜爱。它在编程效率和执行效率之间取得了很好的平衡,同时还提供了一些用于并发编程的原生支持,使得开发者可以更轻松地编写高性能的并发程序。

Golang被广泛应用于构建Web服务、分布式系统、网络工具和云计算平台等领域。它拥有庞大的开发社区和丰富的开源生态系统,提供了许多优秀的库和框架,使得开发者可以更快速、更高效地开发应用程序。

什么是HTTP客户端

HTTP客户端是指发送HTTP请求到HTTP服务器并接收HTTP响应的软件或程序。它可以通过例如浏览器、命令行工具或者开发框架的客户端库来实现。HTTP客户端可以向服务器发送各种类型的HTTP请求,如GET、POST、PUT、DELETE等,并接收服务器返回的HTTP响应。通过HTTP客户端,用户可以与Web服务器进行交互,访问和操作网络资源。常见的HTTP客户端包括浏览器,curl命令行工具和Python的requests库等。

什么是命令行工具

命令行工具是一种在命令行界面下运行的软件程序,它可以通过输入文本命令来执行特定任务或操作。这些工具通常是以命令行界面(CLI)的形式提供,用户可以通过键盘输入命令,并且工具会基于这些命令执行相应的操作。命令行工具可以用于各种操作系统,如Windows、Mac和Linux,并且可以执行各种任务,如文件操作、系统管理、软件开发、网络管理等。与图形用户界面(GUI)相比,命令行工具通常更加灵活和高效,因为它们不需要消耗额外的计算机资源来绘制图形界面。

zdpgo_httpie

使用Golang开发的一个HTTP客户端命令行工具。

主要目标是简化REST接口的测试,使得能够通过命令行的方式直接对开发的HTTP REST接口进行简单的测试,
快速验证HTTP REST接口的正确性。

构建可执行程序

检查依赖:

go mod tidy

Windows构建可执行程序:

go build -o zhttp.exe cmd/zhttp/main.go

Linux构建可执行程序:

go build -o zhttp cmd/zhttp/main.go

使用说明

发送GET请求

基本用法:

./zhttp.exe GET httpbin.org/get

下载文件:

zhttp --download <any url you want>

发送POST请求

基本用法:

./zhttp.exe POST httpbin.org/post hello=world foo=barzhttp POST httpbin.org/post hello=world foo=bar

查看请求信息:

zhttp -v POST httpbin.org/post hello=world foo=bar

携带请求头:

zhttp -v POST httpbin.org/post X-Foo:foobar

发送HTTPS请求:

zhttp --verify=no https://httpbin.org/get

版本说明

v0.1.0

  • 整合zdpgo_errors

v0.1.1

  • 整合zdpgo_isatty

v0.1.2

  • 所有网络依赖本地化

相关文章:

  • Spring 中常用的手动装载 bean 方法
  • 代码随想录训练营Day 38|力扣435. 无重叠区间、763.划分字母区间、56. 合并区间
  • docker实战之搭建MYSQL8.0主从同步
  • C++11function包装器的使用
  • 如何使用Java发送SOAP请求与webservice 服务进行通信
  • 如何搭建springBoot项目中的全局异常处理和自定义异常处理
  • golang通过go-aci适配神通数据库
  • 【全网最全】2024电工杯数学建模B题问题一14页论文+19建模过程代码+py代码+2种保奖思路+数据等(后续会更新成品论文等)
  • CCF-CSP认证 2024年3月 4.化学方程式配平
  • SpringBootWeb 篇-深入了解 Mybatis 概念、数据库连接池、环境配置和 Lombok 工具包
  • SQL、Mongo、Redis一般适用于那些场景
  • 【GO基础】1. Go语言环境搭建
  • Kafka之【生产消息】
  • 虹科案例丨VLAN不再难懂:一台转换器+交换机轻松解锁VLAN配置
  • VUE-watch和watchEffect的区别
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • Mybatis初体验
  • python docx文档转html页面
  • Rancher如何对接Ceph-RBD块存储
  • Redis学习笔记 - pipline(流水线、管道)
  • Vue 2.3、2.4 知识点小结
  • 阿里云应用高可用服务公测发布
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 诡异!React stopPropagation失灵
  • 基于web的全景—— Pannellum小试
  • 前端知识点整理(待续)
  • 使用Swoole加速Laravel(正式环境中)
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 探索 JS 中的模块化
  • 推荐一个React的管理后台框架
  • - 转 Ext2.0 form使用实例
  • Linux权限管理(week1_day5)--技术流ken
  • Prometheus VS InfluxDB
  • ​人工智能书单(数学基础篇)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (HAL库版)freeRTOS移植STMF103
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (论文阅读11/100)Fast R-CNN
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (四)图像的%2线性拉伸
  • (一)WLAN定义和基本架构转
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .gitignore
  • .net 按比例显示图片的缩略图
  • .NetCore部署微服务(二)
  • .net与java建立WebService再互相调用
  • @AliasFor 使用
  • @Not - Empty-Null-Blank
  • [ C++ ] STL---仿函数与priority_queue