go语言服务器代码,Go语言开发简单web服务器
欢迎,来自IP地址为:182.103.254.107 的朋友
Go语言由于其方便的并发通信机制以及强大的网络支持,常常被用于服务器软件的开发。本文将示例使用Go语言来开发简单的Web服务器。
HTTP协议是应用层协议,协议模型位于TCP之上,其主要定义了web服务器同客户端浏览器交互的标准。Go对于处HTTP协议具有专用包”net/http”,用于专门接收HTTP请求及几浏览器返回响应。
当我们引入”http”包后,可以使用http.ListenAndServe()函数启动web服务,就像在TCP服务器中使用net.Listen()函数来开始侦听一样。这个函数会有一个返回值用于指示服务是否启动成功,如果启动成功,则返回值为nil,否则返回错误信息。
web服务器的地址通过专用类型http.URL来表示,这个类型中包含字符串类型的Path字段用于保存url信息;而用户请求会被封装在http.Request类型中,这个类型中则包含了一个URL字段。
如果请求变量”req”是一个HTML表单的POST请求,而”var1″是表单中的某一个输入字段,那么用户在表单中输入的内容可以通过如下的Go代码来获得:
req.FormValue("var1")
另外一种方法是调用request.ParseForm()函数,然后使用如下代码来获取对应值:
var1, found := request.Form["var1"]
这里会有两个返回值,第一个var1是对应的数值,而第二个found是一个bool类型的值,用于指示是否可以找到对应于”var1″的值。可以看出来,Form字段事实上是一个map[string][]string类型。
web服务器生成一个http.Response响应,这个响应会发送到一个http.ResponseWriter对象,这个对象处理HTTP服务器的响应,通过向该对象写数据,请会把响应数据返回给浏览器。
之后,我们还需要编写代码还让web服务器可以工作,也就是可以处理用户请求。Go语言通过http.HandleFunc()函数来完成此项工作。这个函数有两个参数,第一个是用户请求的地址,第二个是对应请求地址的处理函数名。其中请求地址是相对地址,例如web的根地址为”/”,如果使用本面开启服务器,则对应的url就是”http://localhost”等。处理函数一般包含对于用户请求的响应,可以通过fmt.Fprintf()函数或者 io.Writestring()函数来实现。
现在创建一个simplewebserver.go文件,用于编写简单web服务器代码,完整代码如下所示:
package main
import (
"net/http"
"fmt"
"log"
)
func HelloServer(w http.ResponseWriter, req *http.Request){
fmt.Println("Inside HelloServer handler")
fmt.Fprint(w,"Hello: "+ req.URL.Path[1:])
}
func main() {
http.HandleFunc("/",HelloServer)
err := http.ListenAndServe("localhost:8080",nil)
if err != nil{
log.Fatal("ListenAndServe: ",err.Error())
}
}
最后,可以通过浏览器访问”http://localhost:8080/daehub”和”http://localhost:8080/daehub”,可以看到,服务器对于不同url的请求,会给出不同的响应内容:
至此,一个可响应不同url请求的Go语言简单web服务器就完成了,可以明显感觉到用Go语言实开发web服务器是多么简单和方便,代码又简洁而优雅。
go语言服务器代码,Go语言开发简单web服务器相关推荐
- J2EE(一)——开发简单WEB服务器
一.web开发介绍 网页连接过程(B/S):客户端使用浏览器,发送http请求到web服务器上,服务器进行回应.Browser/Server http请求内容: GET/HTTP/1.1 说明是get ...
- android 杀 服务器,android busybox httpd搭建简单web服务器
安卓手机利用busybox中的httpd命令可以创建一个简单的web服务器. 我们可以在终端模拟器中输入一下命令查看httpd的使用帮助. busybox httpd --help 1|u0_a84@ ...
- JAVA个go哪个写web方便_Go语言实现的一个简单Web服务器
Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务.同时使用这个包能很简单地对Web的路由,静态文件,模版 ...
- 简单web服务器学习总结
用node.js实现简单的web服务器 http://www.cnblogs.com/loogn/p/3362475.html http模块已提供了基本功能,所以我主要解决两个问题,1是静态资源的处理 ...
- nodejs php web,nodejs实现的简单web服务器功能示例
本文实例讲述了nodejs实现的简单web服务器功能.分享给大家供大家参考,具体如下: 前端js代码: $.ajax({ url:'http://192.168.0.114:3000',//服务器地址 ...
- SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
转载自 SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载 基本准备工作 1.安装JDK1.6以上版本,安装与配置 2.下载mybatis-3.2.0版:htt ...
- Poco:创建个非常简单web服务器
C++ Poco创建个非常简单web服务器,需要先安装Poco库,配置好Poco头文件和库的路径,window和Linux下都可以编译运行,运行后在浏览器上输入网址:http://127.0.0.1: ...
- Socket网络编程--简单Web服务器(6)
本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了.所以这一小节就是本次的最后一节了.就简单的说几个注意点. 1.加个配置文件 使用单例模式,使用一个类,该类保存一些信息 ...
- 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器
理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...
最新文章
- 利用RMAN检测数据库坏块的脚本
- 从MSSQL添加对Oracle的链接服务器的存储过程
- oracle 动态sql列转行_SQL优化笔记分享:34条实用经验可别错过!
- linux 特定用户ssh,linux - 如何在登录后将SSH用户限制为一组预定义的命令?
- “DropDownList1”有一个无效 SelectedIndex,因为它不在项目列表中。
- flash builder java_Flash Builder4.5 + BladeDS + Java 集成实例
- 波动率模型:现货、期货及期货期权
- ELK日志系统设计方案-Log4j日志直推Kafka
- 智能家居(2)智能体验与智能交互
- 快递是否签收,分享小技巧查询物流查看已签收件
- 离散数学 课时四 谓词逻辑基本概念
- 02- ElasticSearch(简称ES)- 文档批量操作
- 决策树算法学习笔记(三)-预测隐形眼镜类型
- ripv2ospf路由重发布
- 怎么样才能做好非标自动化设备的设计?|| 技巧总结
- 运算放大器工作原理是什么?
- 中软培训-实现分页功能
- python微博批量快速删文章,关注
- Day03_css选择器、css样式大全、引入css样式表、常用标签属性、形变和动画
- java使用redis缓存对象