分享
  1. 首页
  2. 文章

go语言实现的简单web服务器

liutgnukernel · · 6066 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

go语言让web服务器实现和部署变得异常简洁.终于可以抛开乱七八糟的项目结构和体积庞大的IDE,一窥其基本原理.
首先是一个简单的服务器实现代码,如果是GET请求,则回送一条This is a GET request消息,如果是POST请求,则解析POST请求中的info字段,将其内容回送.程序可以直接在命令行下用go run server.go启动.

//server.go
package main
import (
 "fmt"
 "net/http"
)
func login(w http.ResponseWriter,r *http.Request){
 r.ParseForm()
 fmt.Println(r.Method)
 if r.Method=="GET"{
 fmt.Fprintf(w,"This is a GET request")
 }else{
 w.Header().Set("Access-Control-Allow-Origin", "*")
 fmt.Println("Recived info:",r.Form)
 fmt.Fprintf(w,r.Form.Get("info"))
 }
}
func main(){
 http.HandleFunc("/login",login)
 if err:=http.ListenAndServe(":9000",nil);err!=nil{
 fmt.Println("ListenAndServe err",err)
 }
}

然后是浏览器端网页:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>go server测试</title> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.js"></script>
<script type="text/javascript">
 function upload(){ 
 var url = "http://localhost:9000/login";
 var src ={};
 src["info"]=$("input").val();
 $.ajax({
 url: url,
 type: 'post',
 data:src,
 dataTypt: 'json',
 success: function(data){
 $("a").text(data);
 },
 error: function(xhr, msg){
 alert(msg);
 }
 });
 } 
 </script>
</head>
<body>
 输入内容:<input name="info"></input>
 <input type="submit" value="提交" onclick="upload()">
 <div>回显内容:<a></a></div>
</body>
</html>

同样相当简单,直接在浏览器中打开,然后在input框中输入字符串,点击提交就向服务器发送POST请求.服务器将字符串回送回来,如图所示:

如果直接在浏览器中访问http://localhost:9000/login,则相当于发送了GET请求,于是浏览器会收到消息:

无论是客户端还是服务器端的代码结构都很简洁,无非就是服务器端注册路由和对应处理函数,然后将产生的消息写入ResponseWriter;客户端选择服务器端路由,将自身数据通过ajax发送过去,成功了再回调处理函数而已.当然一个优秀的服务器设计需要考虑安全,性能等诸多因素,这里就不详述了.


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:liutgnukernel

查看原文:go语言实现的简单web服务器

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
6066 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏