Go与Web应用

更多Go内容请见: https://blog.csdn.net/weixin_39777626/article/details/85066750

Web应用特质

可扩展
定义:应用的管理者能够简单、快速地提升性能以便处理更多请求
方法:

  • 垂直扩展:提升单台设备的CPU数量或者性能
  • 水平扩展:增加计算机的数量

模块化
定义:大规模的Web应用由可替换的组件构成
优点:

  • 开发者更容易添加、移除、修改特征,满足程序不断变化的需求
  • 通过复用模块化的组件来降低软件开发费用

可维护
定义:确保源代码能够以适当的方式组织起来并且具有良好的可维护性
高性能
定义:

  • 能够在短时间内处理大量请求
  • 服务器能快速地对客户端响应,并让终端用户能够快速地执行操作

Web应用的工作原理

定义:Web应用就是能与用户进行互动并帮助用户执行指定活动的软件程序;如:记账系统、人力资源系统、桌面出版软件
满足条件:

  • 能响应(HTML)客户端发送的请求,客户端能展示渲染后的HTML
  • 传输数据时满足HTTP协议
    在这里插入图片描述

HTTP简介

定义:

  • HTTP是无状态、由文本构成的请求-响应协议
  • 使用客户端-服务器计算模型
    • 客户端会向服务器发送请求
    • 服务器会向客户端返回响应

Web应用的诞生

CGI:在Web应用上调用可执行命令行程序的规范
SSI:允许开发者在HTML文件里面包含一些指令

HTTP请求

组成
  • 请求行
  • 请求首部
  • 一个空行
  • 可选的报文主体(body)
请求方法
请求方法说明
GET返回指定资源
HEAD在不获取报文主体的情况下,取得响应的首部
POST将报文主体的数据传递给URI指定的资源
PUT将报文主体中的数据设置为URI指定的资源
DELETE删除URI指定的资源
TRACE返回请求本身
OPTIONS返回他支持的HTTP方法列表
CONNECT与客户端建立一个网络连接
PATCH使用报文主体中的数对URI指定的资源进行修改
安全的请求方法
安全不安全
GETPOST
HEADPUT
OPTIONSDELETE
TRACE
幂等的请求方法

定义:在使用相同的数据进行第二次调用时,不会对服务器的状态造成任何改变
幂等方法:PUT、DELETE

浏览器支持的请求方法

在这里插入图片描述

请求首部

功能:记录与请求本身以及客户端有关的信息
组成:任意多个用冒号分隔的纯文本键值对组成,以回车(CR)和换行(LF)结尾

常见首部

首部说明
Accept客户端在HTTP响应中能够接收的内容类型
Accept-Charset客户端要求服务器使用的字符编码
Authorization向服务器发送基本的身份证明
Cookie把服务器之前设置的所有cookie回传发服务器
Content-Length请求主体的字节长度
Content-Type记录主体内容的类型
Host服务器名称以及端口
Referrer发起请求的页面所在的地址
User-Agent对发起请求的客户端进行描述

HTTP响应

组成
  • 请求行
  • 请求首部
  • 一个空行
  • 可选的报文主体(body)
响应状态码
状态码含义描述最常见
1xx情报服务器已接收请求,并进行了处理
2xx成功服务器已接受请求,并完成了处理
3xx重定向服务器已接受请求,并完成了处理,但为了完成指定动作,客户端还需再做一些其他工作
4xx客户端错误客户端发送的请求出现了某些问题404 Not Found
5xx服务端错误服务器因为某些原因无法正确处理请求500 Internal Server Error
响应首部

功能:向客户端传达更多与响应相关或者与服务器(对客户端)诉求相关的信息

常见首部
首部说明
Allow服务器支持的请求方法
Content-Length响应主体的字节长度
Content-Type主体内容的类型
Date当前时间(GMT)
Location重定向时,告知客户端接下来向哪个URL发送请求
Server返回服务器的域名
Set-Cookie在客户端设置一个cookie
WWW-Authenticate在Authorization请求首部中应该提供哪种类型的身份验证信息常与 401 Unauthorized 一同发送

URI

在这里插入图片描述

Web应用的各个组成部分

处理器

功能

  • 接收和处理客户端发来的请求
  • 调用模板引擎:生成HTML,并把数据填充至将要回传给客户端的响应报文中

MVC模型

全程含义说明
Model模型表示底层的数据
View视图以可视化的方式向用户展示模型
Controller控制器根据用户的输入对模型进行修改
模板引擎

功能:通过模板和数据生成最终的HTML
模板类型

类型说明
静态模板夹杂着占位符的HTML,通过将占位符替换成相应的数据来生成最终的HTML
动态模板除了HTML和占位符之外,还包含一些编程语言结构,如条件语句、迭代语句、变量JavaServer Pages(JSP)、Active Server Pages(ASP)、Embedded Ruby(ERB)

Hello Go

go 命令比较
命令功能
go run 编译并直接运行文件,会产生一个临时文件(不会产生 .exe文件)
直接在命令行输出程序执行的结果,方便用户调试
go build 测试编译包,检查是否有编译错误
如果是一个可执行的文件源码(即main包),则会生成可执行文件
go install 先编译导入的包文件,再编译主程序
编译后生成的可执行文件放到bin目录下($GOPATH/bin),编译后的包文件放到pkg目录下($GOPATH/pkg)
使用Go构建Hello Go Web应用

代码

package main
import (
	"fmt"
	"net/http"
)
func handler(writer http.ResponseWriter,request *http.Request) {
	fmt.Fprintf(writer,"Hello World, %s",request.URL.Path[1:])
}
func main(){
	http.HandleFunc("/",handler)
	http.ListenAndServe(":8080",nil)
}

Linux

#在文件夹src下创建serve.go文件
gedit /home/as/Documents/Go/src/first_webapp/serve.go

#输入以上代码

#执行
go install first_webapp 

浏览器打开 http://localhost:8080/

Windows
1、打开LiteIDE >> 新建 >> 模板【选择Go1 Commnand Project】 >> 名称【Server】 >> 位置【F:\Go\goProject\src\server】 >> yes

2、输入以上代码

3、点击中间靠右边的蓝色BR(BuildAndRun)按钮即可

4、浏览器打开 http://localhost:8080/

在这里插入图片描述

结果展示

如果一切正常,就能在浏览器中看到如下效果
在这里插入图片描述

更多Go内容请见: https://blog.csdn.net/weixin_39777626/article/details/85066750

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值