web基础知识实践笔记|青训营

94 阅读3分钟

HTTP(Hypertext Transfer Protocol)是用于在Web上传输数据的协议。它定义了客户端和服务器之间的通信规则。在今天的课程中,老师带我们学习了HTTP框架的实现以及其协议。

  1. HTTP协议版本:

    • HTTP/1.0:是最早的HTTP版本,支持简单的请求-响应模型,不维持长连接。
    • HTTP/1.1:引入持久连接、管道化、分块传输编码、虚拟主机等特性,提高性能。
    • HTTP/2:引入多路复用、头部压缩、服务器推送等特性,进一步提升性能。
    • HTTP/3:基于UDP的QUIC协议,提供更快的传输速度和更好的容错性能。
  2. HTTP请求方法:

    • GET:从服务器获取资源。
    • POST:向服务器提交数据。
    • PUT:将数据存储在服务器上。
    • DELETE:从服务器上删除资源。
    • HEAD:获取服务器对资源的响应头部。
    • OPTIONS:获取服务器支持的HTTP方法。
  3. HTTP请求报文:

    • 请求行:包含请求方法、URL和协议版本。
    • 请求头部:包含关于请求的附加信息,如User-Agent、Content-Type等。
    • 请求体:POST等方法的请求数据。
  4. HTTP响应状态码:

    • 1xx:信息性状态码,表示请求已接收,继续处理。
    • 2xx:成功状态码,表示请求已成功被服务器接收、理解和处理。
    • 3xx:重定向状态码,表示需要进一步操作以完成请求。
    • 4xx:客户端错误状态码,表示请求包含语法错误或无法完成请求。
    • 5xx:服务器错误状态码,表示服务器无法完成显然有效的请求。
  5. HTTP框架的编写:

    • 在不同编程语言中,有许多HTTP框架可供使用,如Python的Flask、Django,Java的Spring Boot,还有我们即将用到的go的gin。
    • HTTP框架提供了一套API和工具,使开发者能够轻松地处理HTTP请求和构建Web应用程序。
    • 通常,HTTP框架提供路由系统来匹配URL和处理函数,提供中间件来进行请求和响应的处理,以及提供封装好的HTTP客户端和服务器。

    以下是我根据课程知识写的测试代码

<!DOCTYPE html>  
<html lang="en">  
<head>  
<meta charset="UTF-8">  
<title>login</title>  
</head>  
<body>  
<form action="/login" method="post" navalidata autocomplete="off">  
<div>  
<label for="username">username:</label>  
<input type="text" name="username" id="username">  
</div>  
<div>  
<label for="password">password:</label>  
<input type="password" name="password" id="password">  
</div>  
<div>  
<input type="submit" value="登录">  
</div>  
</form>  
</body>  
</html>
以上代码实现了一个简单的登录按钮
package main    
import (  
"fmt"  
"github.com/gin-gonic/gin"  
"net/http"  
)  
  
type User struct {  
Username string `form:"username" json:"username"`  
Password string `form:"password" json:"password"`  
}  
  
func main() {  
r := gin.Default()  
r.LoadHTMLFiles("index.html")  //渲染模板
// 定义路由和处理函数
r.GET("/index", func(c *gin.Context) {  
c.HTML(http.StatusOK, "index.html", nil)  
})  
r.POST("/login", func(c *gin.Context) {  
var u User  
err := c.ShouldBind(&u) ////根据所绑定的变量类型,自动匹配与变量及其成员类型相同的,从前端传来的数据然返回打包好的变量
if err != nil {  
c.JSON(http.StatusBadRequest, gin.H{  
"erro": err.Error(),  
})  
} else {  
fmt.Printf("%v", u)  
c.JSON(http.StatusOK, gin.H{  
"status": "ok",  
})  
}  
})  
r.Run("localhost:8080")  
}

由此可以实现一个简单的测试网站,当用户填写了登录信息然后点击了登录按钮后会进入login界面,后台会获取用户的信息并打印在控制台上

HTTP是Web应用程序通信的基础,并且通过不断的发展和改进,它变得更加高效和强大。使用适当的HTTP协议版本和请求方法,以及选择合适的HTTP框架,可以使开发人员更轻松地构建高性能的Web应用程序。