golang学习笔记(net/http库基本使用)

关于net/http库

我们先看看标准库net/http如何处理一个请求。

import (
	"fmt"
	"log"
	"net/http"
)

var count = 0

func main() {
	http.HandleFunc("/", handler)
	http.HandleFunc("/count", counter)
	log.Fatal(http.ListenAndServe("localhost:8000", nil))
}

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
	fmt.Printf("URL.Path = %q\n", r.URL.Path)
}

func counter(w http.ResponseWriter, r *http.Request) {
	count++
	fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
	fmt.Println(count)
}

代码块定义了两个不同的路由,分别是“/”和“/count”,分别绑定 handler 和 counter, 根据不同的HTTP请求会调用不同的处理函数。
调用“/”路由处理方法得到的结果是:
在这里插入图片描述
调用“/count”路由处理方法得到的结果是:
在这里插入图片描述

发送Get请求并获取响应

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	resp, err := http.Get("https://www.baidu.com")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	fmt.Println(string(body))
}

执行程序获取到的结果是:
在这里插入图片描述

发送Post请求并获取响应

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"strings"
)

func main() {
	payload := strings.NewReader("data=example")

	resp, err := http.Post("https://www.baidu.com", "application/x-www-form-urlencoded", payload)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	fmt.Println(string(body))
}

执行程序获取到的结果是:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/565905.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

支持中文繁体,支持同时配置并启用飞书和Lark认证,JumpServer堡垒机v3.10.8 LTS版本发布

2024年4月22日,JumpServer开源堡垒机正式发布v3.10.8 LTS版本。JumpServer开源项目组将对v3.10 LTS版本提供长期的支持和优化,并定期迭代发布小版本。欢迎广大社区用户升级至v3.10 LTS最新版本,以获得更佳的使用体验。 在v3.10.8 LTS版本中&…

Hadoop3:大数据生态体系

一、技术层面 通过下面这张图,我们可以大概确定,在大数据行业里,自己的学习路线。 个人认为,Hadoop集群一旦搭建完工,基本就是个把人运维的事情 主要岗位应该是集中在数据计算层,尤其是实时计算&#xff…

云原生环境该怎样解决网络安全问题

随着云计算逐渐迈向成熟阶段,云原生技术以其“生在云上、长在云上”的核心理念,被普遍认为是云计算未来十年发展的关键方向。该技术不仅能够有效破解传统云实践中所面临的应用升级缓慢、架构臃肿、迭代效率低下等难题,更为业务创新注入了强大…

R可视化:桑基图展示数据层流动

介绍 以桑基图形式展示数据分布情况 加载R包 knitr::opts_chunk$set(message = FALSE, warning = FALSE) library(tidyverse) library(ggalluvial)# rm(list = ls()) options(stringsAsFactors = F) options(future.globals.maxSize = 10000 * 1024^2) 导入数据 metadata…

Jenkins CI/CD 持续集成专题三 Jenkins 使用shell脚本打包组件配置流程

第一步 新建任务 第二步 输入项目名称和选择自由风格的软件项目点击确定 第三步 配置下项目地址和账号密码 第四步 配置 build steps 选择 shell 脚本 第五步 shell 配置 (注意shell 必须以#!/bin/sh开头,否则会报 找不到shell 命令的错) …

node.js如何实现留言板功能?

一、实现效果如下: 20240422_160404 二、前提配置: 配置:需要安装并且导入underscore模板引擎 安装:在控制台输入npm install underscore -save 文件目录配置: 1》在文件里建一个data文件夹,此文件夹下…

搜维尔科技:为什么您应该选择 Movella Xsens 动作捕捉

Xsens 动作捕捉 – 黄金标准 从电影制作人到物理治疗师,Xsens 动作捕捉系统正在帮助世界各地的专业人士将动作数字化。要么获得洞察力以改善健康或表现,要么创建角色和视觉特效,将内容制作者的愿景变为现实。 为什么您应该选择Xsens 动作捕捉…

Android Studio开发工具学习之Git远程仓库拉取与推送

Git远程仓库操作 1.1 推送项目到远端服务器1.1.1 进入Gitee或Github、创建一个新的仓库1.1.2 将Android Studio中项目推送至Gitee 1.2 从远端服务器拉取项目1.2.1 AS工程页拉取新项目1.2.2 AS启动页拉取项目 1.1 推送项目到远端服务器 1.1.1 进入Gitee或Github、创建一个新的仓…

自定义表单系统开源是否好用?

在竞争激烈的社会中,拥有够灵活、易维护、可视化界面等优势特点的低代码技术平台获得了很多中小型企业的认可与信赖。在提升企业竞争力、办公效率和规避信息孤岛等方面具有重要的应用价值和作用。流程信息为客户提供低代码技术平台、自定义表单系统开源,…

STM32浮点型变量数值大小边界判断有误的问题的原因及解决方案

1. 问题描述 在使用STM32G431RBT6芯片的开发板的时候,要实现如下图所示的一个按键控制一个浮点型变量的累加与到达边界值清零的功能。 只关于这一部分功能的代码段如下 float x 0; // 浮点型变量初始化 /* 中间的其它代码与该问题无关,这里省略&am…

YOLOv8蒸馏 | 知识蒸馏 | 利用模型蒸馏改进YOLOv8进行无损涨点 | MimicLoss(在线蒸馏 + 离线蒸馏)

一、本文介绍 这篇文章给大家带来的是模型的蒸馏,利用教师模型指导学生模型从而进行模型的涨点,本文的内容不仅可以用于论文中,在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术,所以大家可以仔细学习一下本文的内容&#…

redis 未授权访问漏洞详解

1、漏洞原理: 1、redis 绑定在6379端口,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网。 2、没有设置密码认证(默认密码为空),可以免密码远程登录redis服务。 2、漏洞…

项目大集成

一 keeplived 高可用 192.168.11.11nginx keeplived192.168.11.12nginx keeplived 两台均编译安装服务器 1 主服务器修改文件: 2 备服务器修改文本 scp keepalived.conf 192.168.11.12:/etc/keepalived/ 3 给主服务器添加虚拟ip ifconfig ens33:0 192.168…

DHCP服务器配置故障转移后显示红色箭头、与伙伴服务器失去联系的解决方案

一、遇到的故障现象: (主DHCP服务器与备用DHCP服务器连通性正常,在故障转移选项卡上却显示与伙伴失去联系、伙伴关闭,且ipv4协议旁边显示一个红色的小箭头),正常情况下是绿色 (一)…

Unity场景光照数据Light data asset

首先描述一下遇到的问题,游戏运行过程中切换场景之后发现模型接收的光照不对。 Unity编辑模式下正常显示: 运行模式下从其他场景切入之后显示异常: 排查了灯光参数和环境光以及着色器都没发现异常。 根据ChatGPT的回答,问题可能…

viewerjs在vue中实现点击图片预览、切换、缩放、拖拽、旋转等功能

1、下载依赖&#xff1a; npm i viewerjs 2、定义html结构 <template> <div><ul class"artBody"><li><img src"picture-1.jpg" alt"Picture 1"></li><li><img src"picture-2.jpg" alt&…

编写一款2D CAD/CAM软件(十六)交互绘制图形

绘制步骤 以交互绘制圆形为例&#xff1a; 点击鼠标左键&#xff0c;确定圆心位置&#xff1b;抬起鼠标&#xff0c;移动鼠标&#xff0c;半径随鼠标位置变化&#xff1b;点击左键确定半径&#xff0c;完成圆的绘制。 绘制结果 Code /// j-operator-create-circle.h#pragma…

node.js-包

包的概念 包&#xff1a;将模块&#xff0c;代码&#xff0c;其他资料聚合成的一个文件夹 包分类&#xff1a; 1.项目包&#xff1a;主要用于编写项目和业务逻辑的文件夹 2.软件包&#xff1a;封装工具和方法供开发者使用&#xff08;一般使用npm管理&#xff09; 1&#…

Topaz Photo AI 3.0.0 (macOS Universal) - AI 图片修复工具

Topaz Photo AI 3.0.0 (macOS Universal) - AI 图片修复工具 Maximize Image Quality with AI 请访问原文链接&#xff1a;Topaz Photo AI 3.0.0 (macOS Universal) - AI 图片修复工具&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sy…

Sound Siphon for Mac:音频处理与录制工具

Sound Siphon for Mac是一款专为Mac用户设计的音频处理与录制工具&#xff0c;以其出色的性能、丰富的功能和简便的操作而备受赞誉。 Sound Siphon for Mac v3.6.8激活版下载 该软件支持多种音频格式&#xff0c;包括MP3、WAV、AAC、FLAC等&#xff0c;用户可以轻松导入各种音频…