返回介绍

上卷 程序设计

中卷 标准库

下卷 运行时

源码剖析

附录

http

发布于 2024-10-12 19:15:52 字数 1573 浏览 0 评论 0 收藏 0

超文本传输协议 (HyperText Transfer Protocol)。

由客户端发起请求,创建一个到服务器指定端口(默认 80)的 TCP 连接,服务器返回状态及内容。所请求资源,由统一资源标识符(URI)标识。

HTTP/2,简称 h2(加密)或 h2c(非加密),基于 SPDY 协议改进。

  • 二进制编码。
  • 多路复用,在同一连接内合并多个请求。
  • 流水线,批量提交请求。
  • 压缩报文头。(HPACK)
  • 服务端推送。(PUSH)

HTTP/3 弃用 TCP 协议,改为基于 UDP 的 QUIC 协议实现。

请求方法:

  • GET :显示请求。
  • HEAD :只传回头信息。
  • POST :提交数据。(创建)
  • PUT :更新内容。(更新或创建)
  • DELETE :删除资源。

基本结构:

                                           +----------+
                                      +----|  custom  |
  +----------+       +-----------+    |    +----------+
  |  Server  | ----> |  Handler  |----+
  +-----+----+       +-----------+    |    +----------+
        |                             +----| ServeMux |
        +-- ListenAndServe                 +-----+----+
                                                 |
                                                 +-- Handle, HandleFunc
                                                 
package main

import (
	"fmt"
	"log"
	"net/http"
	"time"
)

type Hello struct{}

func (*Hello) ServeHTTP(w http.ResponseWriter, req *http.Request) {
	fmt.Fprintln(w, "hello, world!")
}

func main() {
	srv := &http.Server{
		Addr:         ":8080",
		Handler:      new(Hello),
		ReadTimeout:  time.Second * 10,
		WriteTimeout: time.Second * 10,
	}

	log.Fatalln(srv.ListenAndServe())
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文