当前位置:首页 > CN2资讯 > 正文内容

go语言服务器echo go编写服务器

11小时前CN2资讯


上一章节我们搭建好了 Go 环境,本节准备在 Windows 下用 Go 写一个简单的 Web 服务器,Go 本身对 Web 开发支持的相当完善,不依赖任何第三方的类库,也不需要依赖容器来运行我们的 Web 服务,编写一个基本 Web 服务器也只要几行代码。

首先我们新建项目,打开 cmder 命令控制台工具,进入 E:\GOPATH\src 路径,新建一个 chapter01 文件夹,我们的项目名就叫 chapter01 了,进入 chapter01 项目根目录下,再新建一个 server.go 文件。

λ E: E:\ λ cd \GOPATH\src E:\GOPATH\src λ mkdir chapter01 E:\GOPATH\src λ cd chapter01 E:\GOPATH\src\chapter01 λ vi server.go

打开 server.go 文件,编写以下几行代码:

*代码清单 - server.go 上简易 Web 服务器代码* package main import ( "fmt" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { fmt.Fprintf(w, "I'm a cook server.") }) http.ListenAndServe(":3001", mux) }

Web 服务器代码写好了,代码里首先是新建一个路由器实例 mux,然后路由器添加一个首页的 Handle Func 函数,它接收一个字符串的 pattern 路径表达式和一个 handler 函数。handler 负责输出一行简单的文字,最后我们通过内置 http 库,使用 3001 端口监听和启动路由服务。

通过 Go 自带的命令 go run 编译运行我们的 server.go 代码:

go run server.go

在浏览器打开首页地址: http://localhost:3001/ ,查看运行结果,这时我们看到浏览器输出 I'm a cool server 这行文字。一个基本的 Web 服务器就这样写好了,非常简单。

如果你要问我,几行代码不知道它的性能怎么样?我只能说如果 服务器 硬件足够强,你想要它多强,它就有多强,绝对会超出你的期望!

我们现在给服务器稍微润色一下,增加一些可控的参数,设置读写空闲的超时时间、头部数据大小、让它支持优雅地启动和关闭。

*代码清单 - 功能完善的 Web 服务器代码* package main import ( "context" "fmt" "log" "net/http" "os" "os/signal" "time" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { fmt.Fprintf(w, "I'm a web server.") }) timeOut := time.Second * 45 srv := &http.Server{ Addr: ":3001", Handler: mux, ReadTimeout: timeOut, WriteTimeout: timeOut, IdleTimeout: timeOut * 2, MaxHeaderBytes: 1 << 20, } go func() { if err := srv.ListenAndServe(); err != nil { log.Fatalf(" listen and serve http server fail:\n %v ", err) } }() exit := make(chan os.Signal) signal.Notify(exit, os.Interrupt) ctx, cacel := context.WithTimeout(context.Background(), timeOut) defer cacel() err := srv.Shutdown(ctx) log.Println("shutting down now. ", err) os.Exit(0) }

这样一个相当完善的 Web 服务器就完成了,目前项目只有一个 server.go 文件,下一节,我们进一步组织项目的代码结构,分一下层,让项目结构更加清晰,为后期提高可维护性做准备。

小结

本章从编写一个简单 Web 服务器开始,对它逐步进行改良完善,使它成为一个正式的 Web 服务器,向外部优雅地提供服务,如果在 C、C++、 Java 上完成这样的工作,用几行代码来完成是无法想象的。总而言之 ,Go 语言对 Web 的支持天生就是简洁和友好的。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/23673.html

    分享给朋友:

    “go语言服务器echo go编写服务器” 的相关文章

    GPU租用市场的崛起与行业应用分析

    在过去的几年中,GPU租用市场的发展速度让我惊叹,真的如雨后春笋般冒出。随着科技的不断进步和市场需求的增长,越来越多的人选择租用GPU来满足高性能计算的需求。这种选择不仅适用于企业,也吸引了许多个人用户。GPU租用为我们提供了便利,加速了各类计算密集型任务的完成。 GPU租用的定义非常简单,就是将高...

    如何在Vultr上添加适合的充值金额和选择合适的VPS方案

    Vultr概述 Vultr是一家在云服务领域颇有声誉的公司,它以提供高性能的虚拟专用服务器(VPS)而闻名。Vultr不仅在全球范围内拥有多个数据中心,还以其灵活的方案和易于扩展的功能,赢得了众多用户的青睐。在激烈的市场竞争中,Vultr凭借其合理的价格和优化的服务流程,使自己脱颖而出,成为许多个人...

    如何利用VPS优惠码省钱并提升服务体验

    在互联网上,虚拟专用服务器(VPS)已经成为许多个人和企业的首选方案之一。VPS允许用户拥有一个独立的、完全可控的服务器环境,同时又节省了许多硬件投资成本。对于那些刚开始接触VPS的朋友来说,了解VPS的定义及其用途是非常重要的。在这里,VPS不仅仅是一个存储空间,它能为你的业务提供强大的运算能力和...

    选择和管理海外服务器的最佳策略与优势

    在如今这个信息高度发达的时代,海外服务器逐渐成为许多企业的不二选择。简单来说,海外服务器是指那些位于中国境外的数据处理设备。这些服务器致力于为全球用户提供高效的服务,不论是数据存储、网站托管还是其他在线服务。通过使用海外服务器,企业能够接触到更广阔的市场以及可定制的解决方案,以满足特定需求。 选择海...

    AMD Ryzen VPS 性能测评:RackNerd 的优越体验与机房对比

    当我开始使用RackNerd的VPS服务时,我被它的低价和强大性能所吸引。作为一个刚入驻云计算的用户,我知道许多商家提供VPS,但RackNerd以十美元每年的超低价格引起了我的注意。而真正让我印象深刻的是它的稳定性与出色的售后服务。我曾多次遇到技术问题,售后支持总能在第一时间给我回应,这让我感受到...

    如何找到便宜的域名并有效管理

    在了解便宜域名之前,首先我们要对“域名”这个概念有个清晰的认识。域名其实就是互联网上某个特定网站的地址。当我在浏览器中输入一个域名,比如“example.com”,就能顺利地找到对应的网站。简单来说,域名是你在网上的身份标识。而它的作用不仅是让用户更容易记住和访问你的网站,还能提升你品牌的可信度。...