HTTP 服务器(基于go实现)

这篇具有很好参考价值的文章主要介绍了HTTP 服务器(基于go实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编写一个 HTTP 服务器,接收客户端 request,并将 request 中带的 header 写入 response header

解析HTTP请求头

import (
	"fmt"
	"net/http"
)

func headers(w http.ResponseWriter, r *http.Request) {
   // 将request中的信息写入到 w中, w为response 并打印输出 
	for key := range r.Header {
		fmt.Fprintf(w, "%s: %s\n", key, r.Header[key])
	}
	// 通过两种方式去打印requset中的 "Accept-Encoding" 第一种输出是slice第二种是string。
	fmt.Fprintf(w, "--------------\n")
	fmt.Fprintf(w, "the key: %s\n", r.Header["Accept-Encoding"])
	fmt.Fprintf(w, "the key: %s\n", r.Header.Get("Accept-Encoding"))
}
func main() {
	server := http.Server{
		Addr: "0.0.0.0:8080",
	}

	http.HandleFunc("/headers", headers)
	server.ListenAndServe()
}

解析请求头,并记录访问日志

编写一个 HTTP 服务器, 接收客户端 request,并将 request 中带的 header 写入 response header ,读取当前系统的环境变量中的 VERSION 配置,并写入 response header Server 端记录访问日志包括客户端 IP,HTTP 返回码,输出到 server 端的标准输出 当访问 localhost/时,应返回 200文章来源地址https://www.toymoban.com/news/detail-672291.html

package main

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

func main() {
	http.HandleFunc("/", handler)

	err := http.ListenAndServe(":8080", nil)
	if err != nil {
		log.Fatal(err)
	}
}

func handler(w http.ResponseWriter, r *http.Request) {
	// 将请求中的header写入响应header
	for name, values := range r.Header {
		for _, value := range values {
		   // 该方法是向reponse返回请求中的header中添加键值对
			w.Header().Add(name, value)
			// 该方法是向reponse返回请求中的content中添加内容
			fmt.Fprintf(w, "%s: %s\n", name, r.Header[name])
		}
	}

	version := os.Getenv("VERSION")
	// 记录访问日志
	ip := r.RemoteAddr
	statusCode := http.StatusOK
	log.Printf("IP: %s, Status Code: %d\n", ip, statusCode)

	// 设置响应状态码
	w.WriteHeader(statusCode)
	w.Header().Set("Server", version)

	// 输出到server端的标准输出
	fmt.Println("Received request:", r.URL.Path)
}

打包镜像

FROM golang:1.18 AS build
WORKDIR /httpserver/
COPY . .
ENV CGO_ENABLED=0
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
RUN GOOS=linux go build -installsuffix cgo -o httpserver httpServer.go

FROM busybox
COPY --from=build /httpserver/httpserver /httpserver/httpserver
EXPOSE 8080
WORKDIR /httpserver/
ENTRYPOINT ["./httpserver"]`

到了这里,关于HTTP 服务器(基于go实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于 Python 实现一个简单的 HTTP 服务器

    文章这个题目,让我想起了大学时上《Unix 网络编程》这门专业课的家庭作业,题目几乎一模一样。 HTTP 服务器工作在服务端,主要功能包括处理来自客户端的请求,管理网络资源,以及生成和发送响应给客户端。在实际应用中,HTTP 服务器不仅限于传输 HTML 文档;它还可以传

    2024年03月22日
    浏览(44)
  • Go Fiber搭建一个HTTP服务器

    Fiber 是一个 Express 启发 web 框架基于 fasthttp ,最快 Go 的 http 引擎。设计为简易,及快速的方式开发,同时考虑零内存分配和性能。这里默认你已经搭建好了本地Go环境。 一、安装 二、创建本地工程 创建本地工程后,使用 go mod init 初始化当前文件夹为一个 Go Module,并指定其导

    2024年02月09日
    浏览(32)
  • 使用Go语言编写HTTP代理服务器

    在Go语言中,编写一个HTTP代理服务器相对简单且直观。代理服务器的主要职责是接收客户端的请求,然后将请求转发到目标服务器,再将目标服务器的响应返回给客户端。下面是一个简单的示例,展示如何使用Go语言编写一个基本的HTTP代理服务器: go 复制代码 package  main i

    2024年01月18日
    浏览(41)
  • 使用Go语言编写简单的HTTP服务器

    在Go语言中,我们可以使用标准库中的\\\"net/http\\\"包来编写HTTP服务器。下面是一个简单的示例,展示了如何使用Go编写一个基本的HTTP服务器。 go 复制代码 package  main import  ( \\\"fmt\\\"   \\\"net/http\\\"   ) func   main ()  { // 创建一个处理器函数,处理所有对根路径的请求 handler := func (w http.

    2024年01月24日
    浏览(36)
  • Go语言的服务器编程与HTTP_2

    Go语言是一种现代编程语言,由Google的Robert Griesemer、Rob Pike和Ken Thompson于2009年开发。Go语言的设计目标是简单、高效、可靠和易于扩展。它具有垃圾回收、类型安全、并发简单等特点。Go语言的标准库提供了丰富的功能,包括网络、并发、数据结构等。 HTTP/2是一种更新版本的

    2024年02月20日
    浏览(32)
  • 基于Spring Boot2.0 & HTTP/2 实现服务器、客户端

    HTTP协议由于其无状态的特性以及超高的普及率,是当下大部分网站选择使用的应用层协议。然而,HTTP/1.x的底层传输方式的几个特性,已经对应用的整体性能产生了负面影响。特别是,HTTP/1.0在每次的TCP连接上只允许发送一次请求,在HTTP/1.1中增加了请求管线,但是这仅仅解决

    2023年04月09日
    浏览(50)
  • 使用Go语言的HTTP客户端和服务器

    使用Go语言进行HTTP客户端和服务器开发是一种高效且强大的方式。Go语言的标准库提供了对HTTP协议的全面支持,使得创建HTTP客户端和服务器变得简单。 首先,让我们来看一下如何创建一个简单的HTTP服务器。在Go中,可以使用 net/http 包来创建HTTP服务器。以下是一个简单的示例

    2024年01月16日
    浏览(39)
  • 【基于C++HTTP 服务器的epoll 改造】

    打印模块 Log.hpp 方便使用 TcpServer.hpp HttpServer.hpp Task.hpp ThreadPool.hpp Util.hpp Protocol.hpp Makefile main.cc 后续加上post 请求 原文链接: link

    2024年02月02日
    浏览(39)
  • 【项目实现】自主HTTP服务器

    本项目实现的是一个HTTP服务器,项目中将会通过基本的网络套接字读取客户端发来的HTTP请求并进行分析,最终构建HTTP响应并返回给客户端。 HTTP在网络应用层中的地位是不可撼动的,无论是移动端还是PC端浏览器,HTTP无疑是打开互联网应用窗口的重要协议。 该项目将会把

    2024年02月19日
    浏览(29)
  • 【计算机网络】HTTP协议以及简单的HTTP服务器实现

    虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输议)就是其中之一。 平时我们俗称的 “网址” 其实就是说的 URL 像 / ? : 等这样的字符, 已经被url当做特殊意义理解了.

    2024年01月20日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包