Web基础 | 豆包MarsCode AI刷题

77 阅读2分钟

Web基础

一切的网络开发,本质上就是服务的请求与响应处理

静态web、动态web

静态Web不发生变化:

  • HTML、CSS
  • 是提供给所有人看的,数据几乎不发生变化

动态Web,所有人看到的都不一样

  • 抖音
  • 提供给所有人看到的数据都不一致,会发生变化。不同时间不同地点都可能不同

Web请求的基本流程

  1. DNS解析
  • 客户端通过域名发送DNS请求
  • DNS服务器返回该域名的IP地址
  1. 建立TCP连接
  • 客户端使用得到的IP地址,通过TCP三次握手与服务器建立连接

如果是 HTTPS,还会在此基础上进行 TLS/SSL 握手,协商加密算法和密钥,建立加密通道。

  1. 发送HTTP/HTTPS请求
  • 客户端向服务器发送HTTP/HTTPS请求,包含以下内容:

    • 请求行:

      • 请求方法(如GET,POST
      • URL路径
      • HTTP版本
    • 请求头

    • 请求体(可选):

      • 一些方法(如POST,PUT)可能会包含请求体,用于传递数据(如表单form
  1. 服务器处理请求
  2. 返回HTTP响应
  • 服务器向客户端返回 HTTP 响应,包含以下内容:

    • 响应行:

      • HTTP 版本
      • 状态码(如 200 OK, 404 Not Found
    • 响应头

    • 响应体:

      • 包含实际数据(如 HTML、JSON、图片二进制流)。
  1. 客户端渲染或处理响应
  • 浏览器:

    1. 解析HTML
    2. 根据HTML内容发送额外请求
    3. 渲染页面并执行相关脚本
  1. 关闭连接

Web请求的基本流程可以概括为 客户端发起请求 -> 服务器处理请求 -> 客户端接收响应

简单的HTTP编程

Hello World!

package main
​
import (
   "fmt"
   "net/http"
)
​
//服务端 -> 请求响应
func main() {
   // 访问这个url就会触发 hello 函数 
   http.HandleFunc("/hello", hello)
   http.ListenAndServe("127.0.0.1:8080", nil)
}
​
​
func hello(resp http.ResponseWriter, req *http.Request) {
    fmt.Fprintf(resp,"Hello World!")
    //或者
    resp.Write([]byte("Hello World!"))
}

其中:

  • http.HandleFunc 是用于设置 HTTP 路由和处理函数的标准库方法。它的作用是将某个 URL 路径与一个处理函数(HandlerFunc)关联起来,从而定义服务器在特定路径接收到请求时应该执行的逻辑。

    • 使用方式:func HandleFunc(pattern string, handler func(ResponseWriter, *Request))

    • 参数说明

      • pattern:

        • 表示路径,比如"/hello"表示匹配的URL路径
      • handler:

        • 是一个函数,格式为func(ResponseWriter, *Request))
        • http.ResponseWritet:用于向客户端发送响应数据
        • *http.Request:包含客户端的请求信息(如请求办法、头信息、URL、请求体等)
  • http.ListenAndServe启动服务器:

    • 服务器开始监听指定端口(如8080),处理客户端的HTTP请求

简单尝试

既然已经学了Web的基础操作了,那就再完成一个简单的用户管理系统

要求:

  • 具有注册、登录、修改密码、获取和修改用户信息等功能

(嘿嘿)